基本的にいくつかのユーザー情報でオブジェクトを設定するAngularサービスを作成しました。ユーザーを変更すると、サービスは、情報を更新するために、いくつかの兄弟コンポーネントによってキャプチャされた観測可能なオブジェクトを放出します。問題は、初めてデータを設定したときに、まだ誰も購読していないので、私は未定義の値を取得するということです。私はobservableをpublish()やshare()を使って 'hot'に変換することについて読んだことがありますが、私はRxJSにはかなり新しく、まだ100%で動作するかどうかはまだ分かりません。最後に発行される方法Observable
サービスコード(関連部分):
getFwcUser() : Observable<FwcUser> {
return this.subjectFwcUser.asObservable();
}
setFwcUser(user : FwcUser) {
this.fwcUser = user;
this.subjectFwcUser.next(this.fwcUser);
}
注:FwcUserは、いくつかのユーザフィールドとのインタフェースです。私はボタンハンドラの中でsetFwcUserを実行してユーザを選択します。
後期加入者(成分コード):
ngOnInit() {
this.fwcUserService.getFwcUser()
.subscribe(
(user : FwcUser) => { console.log('Received: ', user); this.fwcUser = user; }
);
[......]
}
常に印刷: '受付:未定義'。 注:コンポーネントは '* ngIf = "fwcUser"の内部にあるため、兄弟コンポーネントから' setFwcUser 'を呼び出すとロードされます。
このコンポーネントで失われた値を読み取る方法を教えてください。
また、誰かが初心者のためのRxJSについて学ぶための良いリソースをお勧めしますか?私はAngular4についていくつかの本を読んでいますが、それらのどれもはっきりと説明していません...
ありがとう!
ありがとう!そして、setFwcUser()関数はどのように見えますか?これは次のようなものでしょうか? 'this.fwcUser = new BehaviorSubject(user);' – Fel
BehaviorSubjectを更新するための最良の方法を使って回答を更新しました。新しい値を受け取る関数をサービスに追加し、 'next()'関数を使用して新しい値をプッシュする必要があります。 – joshrathke
こんにちは!申し訳ありません、私は前にそれをテストすることができませんでした、私は本当に忙しいです...私はあなたの指示に従って、それは完全に動作します!どうもありがとうございました :) – Fel