ich auf Angular bin 2 und codiert eine Klasse wie so:Methoden in Winkel Typoskript Klasse sind null nach http bekommen
export class Book{
title: string;
author: string;
read: integer;
private: _author;
constructor(author: string) {
this._author = author
}
public incRead(times: integer){
this.read = this.read + times;
}
}
Dann werden die Daten vom Server an einer Komponente zu erhalten:
this._httpClient.Get<Book[]>(url).subscribe(
(books: Book[]) => {
this.books = books;
}
)
Aber ich kann auf die Funktion book.incRead (3) in keinem der Mitglieder des Books-Arrays in der Komponente zugreifen.
Vielleicht HttpClient Get Methode instanziiert nicht korrekt oder ich muss zu einem anderen Array zuordnen, um Zugriff auf die öffentliche Methode in der Klasse zu erhalten.
Ich habe einige Workaround versucht, aber Code wird unnötigerweise Schmutz.
Bitte seien Sie nett. Ich habe wirklich meine Hausaufgaben gemacht und konnte keine so klare Frage finden.
EDIT
Ich habe die Klasse ein bisschen verändert und jetzt kann ich diesen Weg gehen:
export class Book{
title: string;
author: string;
read: integer;
author: string;
constructor() {
}
public incRead(times: integer){
this.read = this.read + times;
}
}
und Daten von dem Server zu erhalten (mit diesem Ansatz: HttpClient not running constructor) Ich kann verwenden Objekt
this._httpClient.Get<Book[]>(url).subscribe(
(books: Book[]) => {
const tempbooks = new Array<Book>();
books.forEach(book => {
tempbooks.push(Object.assign(new Book(),book);
}
}
)
zuweisen
Jetzt wäre es perfekt Hinzufügen einer Post-Funktion in der Klasse des HTTP-Dienst verwenden, b Aber ich öffne es in einer neuen Frage.
Glückliche Codierung!
Josep.
was ist das erwartete Verhalten? – Aravind
Ich versuche, die Methode incRead für jedes Objekt zu verwenden, das von der HttpClient get-Funktion generiert wird. Wenn httpClient die Daten abruft (Buch-Array, nur Eigenschaften), ist die Methode nicht verfügbar. –