2017-01-03 2 views
2

Hier möchte ich zeigen Liste der Kunden für die ich schreibe eine Dienste-Klasse in dieser Klasse Schreiben ist eine Funktion GetCustomer()Kann nicht Eigentum ‚get‘ undefinierter in Typoskript

data.service.ts lesen

// @Injectable() // comment to this line in service if we are inject service in component 
    export class DataService { 
    constructor(public http: Http) { } 
    getCustomers(): Promise<ICustomer[]> { 
     return this.http.get(this.customersBaseUrl) 
        .toPromise() 
        .then(response => response.json().data as ICustomer[]) 
        .catch(this.handleError); 
     } 
} 

In customer.component.ts Anruf GetCustomer()

constructor(@Inject(DataService) private dataService: DataService) { } 
ngOnInit() { 
    this.title; 
    this.filterText = 'Filter Customers:'; 
    this.dataService.getCustomers().then(customers => this.customers = customers.slice(1, 5)); 
} 

app.module.ts

import { HttpModule } from '@angular/http'; 
@NgModule({ 
    declarations: [ 
     AppComponent, 
     CustomersComponent, 
    ], 
    imports: [ 
     HttpModule, 
     app_routing, 
     ..  
    ], 
    providers: [ 
    DataService, 
    ], 
    bootstrap: [AppComponent,NavbarComponent] 
}) 

Gib mir Vorschlag, wenn ich in irgendwelchen point.I falsch bin bin neu in Typoskript so dass ich im Voraus

so viel Ahnung von this.thanks haben nicht
+1

Haben Sie Ihren Dienst unter Providern in Ihrem ngModule deklariert? Möglicherweise in einer Datei mit dem Namen app.module.ts – Just1689

+0

ja ich bereits erklärt Service und httpModule in app.module.ts –

+0

für DataService instanziiert oder nicht ich gebe Bedingung .und in der Konsole "finden Sie Dienste" meassgae display .. –

Antwort

-2

Wenn dies der Code ist, der von Ihrem Fehler betroffen ist, kommt Ihr Fehler von get Anruf. Das heißt, Angulars hat keine Kenntnisse über Ihren HTTP-Dienst. Hast du es richtig installiert?

+4

sollte dies in commens sein –

+0

Sie sind nicht hilfreich für ihn gerade jetzt ... Und ich lege es da, weil die Kommentare sind schon zusammengebrochen, ist es nicht besser zu antworten, damit wir auf meine Antwort eingehen können? – trichetriche

2

nur Ihren Code ändern, wie unten ..

ngOnInit() { 
this.title; 
this.filterText = 'Filter Customers:'; 
this.dataService.getCustomers().subscribe(customers => this.customers = customers.slice(1, 5)); 

}

In data.service.ts

getCustomers(): Observable<ICustomer[][]> { 
    return this.http.get(this.customersBaseUrl) 
     .map((response: Response) => <ICustomer[]>response.json()) 
     .do(data => console.log("All: " + JSON.stringify(data))) 
     .catch(this.handleError); 
} 

private handleError(error: Response) { 
    console.error(error); 
    return Observable.throw(error.json().error || 'Server error'); 
} 
+0

subscribe ist Eigentum von observal und dann ist Eigenschaft des Versprechens..wenn Wechsel abonnieren statt dann. Dann gibt es Fehler –

+0

Actuall Ich fand genauen Fehler .. bitte helfen Sie mir, dies zu lösen –

+0

Schließlich funktioniert es, wenn wir Service in Komponente injizieren dann keine Notwendigkeit, @Injectable() zu Service dh DataService..just kommentieren diese @injecable() in der Servicedatei..Ich aktualisiere den Code –

0

Kommentar zu @Injectable() in Dataservice. wenn wir injizieren Service in Komponente dann keine Notwendigkeit, in Dienst injizieren

//@Injectable() 
export class DataService { 
    constructor(public http: Http) { } 
    getCustomers(): Promise<ICustomer[]> { 
     return this.http.get(this.customersBaseUrl) 
        .toPromise() 
        .then(response => response.json().data as ICustomer[]) 
        .catch(this.handleError); 
     } 
} 
Verwandte Themen