私はいくつかのデータを取得し、それを表示するためにobervable in inputとして他のコンポーネントに送るために、 "genericC"という一般的なコンポーネントを使用しています。角度@Input変数が観測可能(ライフサイクル)の最新のものではありませんか?
しかし、データを更新する目的でこの汎用コンポーネントにイベントの送信を送信しようとすると、汎用コンポーネントの入力から来るuserId変数がngOnChanges()メソッド。 いつも聞いて、データの更新を待つ観測可能性を使うのは当てはまりません。
たぶん私はこれが私の前のテキストよりも明らかであろうこと、ホッピングでは、私のコードであるアンギュラ
とデータのライフサイクルについて何かを欠場:
Component A, I want to say, go to update the data via this call : this.uiService.refreshFetchNotify("family");
Component GENERIC:
@Input() userId: string;
@Input() type: string;
..... constructor and declarations of variable
this.refreshFetch$ = this.uiService.refreshFetchChanged().startWith(this.type);
ngOnChanges(changes: SimpleChanges) {
// this.userId ===> is up to date as expected
}
this.searchTxt$ = this.searchForm.valueChanges
.startWith(null)
.combineLatest(this.refreshFetch$) // this.userId just after is NOT UP TO DATE yet
.switchMap(([_, refresh]) => {
if (this.type === 'family' && refresh === this.type)
return this.filterFamiliesUser(
this.userId
);
else() {
// something else here
}
});
は、事前にありがとうあなたの助け
編集:この例では、私はそれを汎用コンポーネントと呼んでいますが、私のアプリケーションで今のようにアプリケーションを使用していても、私はサービスを使用します。 @入力コンポーネントに依存する
一般的なコンポーネントにビューが添付されておらず、データ更新を行う目的がある場合は、サービスにリファクタリングすることができます – Vega
私はあなたに同意します。ここに述べた問題を避けてください。 私のコンポーネントを保持しなければならない場合、私は答えを知っているでしょう:) –