私はangle2を使ってparamに基づいてapi呼び出しをしようとしています。コンポーネントが初期化され、パラメータが変更されたときに、このapi呼び出しを行う必要があります。以下は私が使用しているコードです。問題は、ngOnInit
が実行されて、paramsでapiを呼び出した後、すぐにapiを2回呼び出す変更をサブスクライブするときです。initとparamsでのapi呼び出しの変更
このような状況を処理する適切な方法は何ですか。これにより、api呼び出しはinitで一度だけ呼び出され、それでもパラメータの変更を観察できますか?
ngOnInit() {
Observable.zip(this.route.queryParams, this.route.params).subscribe((params: any) => {
this.queryParams = params[0];
this.params = params[1];
this.get();
this.subscribe();
});
}
subscribe() {
this.queryParamsSub = this.route.queryParams.subscribe((params: any) => {
this.queryParams = params;
this.get();
});
this.paramsSub = this.route.params.subscribe((params: any) => {
this.params = params;
this.get();
});
}
// this is called 3 times on init
get() {
this.apiManager.get(this.queryParams, this.params);
}
ngOnDestroy() {
this.queryParamsSub.unsubscribe();
this.paramsSub.unsubscribe();
}
subscribe()関数内で2つのget()呼び出しを最初から防ぐ「init-flag」の設定はどうですか? – fen89