Ich habe eine Komponente, die auf ein asynchron abgerufenes Objekt angewiesen ist. Es gibt auch untergeordnete Komponenten in der Vorlage, die auf Daten von demselben Objekt beruhen.Angular2 Async Data Issue
Das Problem, das ich habe, scheint eine klassische Race-Bedingung zu sein, aber ich bin nicht genug vertraut mit Angular 2, um die Lösung zu verstehen.
Nehmen Sie dies zum Beispiel:
export class SampleComponent {
constructor(service: SomeService) {
this.service = service;
this._loadData();
}
private _loadData() {
this.service.getData().subscribe(data => this.data = data);
}
}
Aber in der Vorlage, ich habe Kind Komponenten bestimmte Teile this.data
anzuzeigen:
<taglist tags="data?.tags"></taglist>
Nun ist die Komponente für taglist
sieht ungefähr so aus:
@Component({
selector: 'taglist',
directives: [NgFor],
inputs: ['tags'],
template: `<span *ngFor="#tag of tags">{{ tag }}</span>`
})
export class TagList {
public tags: Array<string> = [];
constructor() {
//
}
}
Weil Tags eingegeben werden von einem asynchronen geladenen Dataset ist es nicht vorhanden, wenn die Tag-Komponente initialisiert wird. Was kann ich tun, damit nach dem Laden von this.data
die Subkomponenten, die es verwenden, automatisch auf die neu geladenen Daten zugreifen?
Vielen Dank für alle Einblicke, die Sie mir möglicherweise bieten können!
So habe das vorher versucht, Und wenn ich console.log chages ['tags']. currentValue druckt es die string 'daten? .tags' anstelle des ausgewerteten werts:/ –
ich sehe. Verwenden Sie ' ' oder ' ' –
Ehrfürchtig, ich werde das hier in Kürze versuchen. Danke für die Zeiger –