私は、チェックボックスのリストを表示する子コンポーネントCheckboxListComponent
を持っています。このリストには、Webサービスの呼び出しにより、ngOnInit
に入力されます。Angularでデータを待つ正しい方法は何ですか?
また、チェックする特定の項目を設定するための機能setEntryChecked
があります。 が、データがある前にCheckboxListComponent
が呼び出されると、呼び出しが失われたり、効果がありません。
私の解決方法は、結果がawait this.listSubject.first().toPromise()
で利用可能になるまで待つことです。
TypeScriptでこれを行うより良い方法はありますか?
export class MainComponent {
@ViewChild('checkboxList') checkboxListComponent: CheckboxListComponent;
foo() {
this.checkboxListComponent.setEntryChecked(..., true);
}
}
export class CheckboxListComponent implements OnInit {
list: [];
private listSubject = new Subject<boolean>();
async ngOnInit() {
try {
this.list = await this.dataService.get('url');
this.listSubject.next(true);
} catch (err) {
this.listSubject.next(false);
}
this.listSubject = undefined;
}
async setEntryChecked(name: string, isChecked: boolean) {
// wait for the list to be initialized
if (this.listSubject) {
await this.listSubject.first().toPromise();
}
// make the item checked
}
}
リゾルバを使用します。詳細情報[ここ](https://angular.io/guide/router#resolve-pre-fetch-component-data)と[ここ](https://alligator.io/angular/route-resolvers/) – amal