サービスが初期化されて他のコンポーネントがロードされるまで待つ方法はありますか? (データを必要とする)コンポーネントを表示する前にいくつかのデータを同期してロードする必要があり、非同期呼び出しのものを使用したくない(非同期呼び出しのものを使用する)Angular2:サービスの初期化を待つ
ngIfは切断していないようです一致しない場合でもコンポーネントのロード)。
私はルータを使用していないので(アプリケーションでは必要ありません)、この場合、@CanActivateは適切ではないと思います。
アイデア?
@Component({
selector: 'my-app',
directives: [MyDirective],
template: `
<div>
<div *ngIf="!initialized">Loading...</div>
<div *ngIf="initialized"><myDirective>should wait for service to be initialized</myDirective></div>
</div>`
})
export class AppComponent {
initialized = false;
constructor(_myService: MyService) {
this._myService = _myService;
}
ngOnInit() {
this._myService.init()
.then(() => {
setTimeout(() => this.initialized = true, 2000);
}
);
}
}
私は同意する、NgIfは動作するはずです。ただFYI、 'implements'は必要ありません。 TypeScriptエディタで構文エラーを検出することをお勧めしますが、必須ではありません。 –
これは必ずしも有用ではありません。私のサービスが準備される前に、HTTP経由でデータをロードしたいと思っています。私はfirebaseにデフォルト値を持っています。もし私のサービスがidを取得しなければ、idを持つ新しいオブジェクトにデフォルト値をコピーする必要があります。問題は、すぐにすべてを注入するだけで、firebaseのデフォルト値が必ずしも読み込まれないことです。 – Seiyria
@Seiyriaこれは別の質問ですが、あなたはある種の怠惰なモデルの完成を探しています。おそらく元の質問に関連していません。 – Zlatko