2017-04-04 1 views
1

Ich bin eine Angular2 Anwendung zu entwickeln, und ich habe die folgende Komponente:Angular2 Property 'xxx' existiert nicht auf Typ 'XXX'

import {Component, OnInit} from '@angular/core'; 
import {CourseAdminService} from "../shared/course-admin.service"; 
import {Course} from "../shared/course"; 

@Component({ 
    selector: 'app-course-admin-list', 
    templateUrl: './course-admin-list.component.html', 
    styleUrls: ['./course-admin-list.component.css'] 
}) 
export class CourseAdminListComponent implements OnInit { 

    courses: Course[] = []; 
    keyword = ""; 

    constructor(private courseAdminService: CourseAdminService) { 
    } 

    ngOnInit() { 
    this.loadMore(); 
    } 

    reset() { 
    this.courses = []; 
    this.loadMore(); 
    } 

    loadMore() { 
    let since: Date = null; 
    let before: Date = null; 

    let len = this.courses.length; 
    if (len > 1000) { 
     since = this.courses[0].creationTime; 
     before = this.courses[len - 1].creationTime; 
    } 

    let subscription = this.courseAdminService.get(since, before, this.keyword) 
     .subscribe(courses => { 
     this.courses = this.courses.concat(courses); 
     subscription.unsubscribe(); 
     }); 
    } 
} 

Und ich habe die folgende Schnittstelle:

export interface Course { 
    id: string; 
    nameEn: string; 
    nameAr: string; 
    trainer: string; 
    type: string; 
    country: string; 
    city: string; 
    level: string; 
    creationTime: Date; 
} 

Das Problem hier ist, dass, wenn ich versuche, die App zu kompilieren (mit eckigen @ CLI) gibt es mir den Fehler: Property 'creationTime' does not exist on type 'Course', und wie Sie oben sehen können, ist die creationTime Eigenschaft in der Tat ein Teil der Schnittstelle. Kann mir jemand sagen, was das Problem hier ist?

+0

Haben Sie die ts-Dateien zu js-Dateien kompiliert? – echonax

+0

Was ist der Rückgabewert Ihrer Funktion 'courseAdminService.get'? Wenn das keinen Kurs zurückgibt, könnte er sich beschweren. aber es wäre gut, die Zeilennummer zu kennen, wo er denkt, dass das passiert – Daniel

+0

@echonax Ich benutze den 'ng serve' Befehl von anglar-cli, der das automatisch tut – m2008m1033m

Antwort

1

Es stellte sich heraus, dass, wenn ich eine Schnittstelle wie das Hinzufügen einer neuen Eigenschaft ändern möchten oder sogar eine neue Schnittstelle erstellen, ich habe die ng serve Befehl zu stoppen und wieder erneut ausführen.

Verwandte Themen