2016-11-15 7 views
1

Observableを返すgetSelectedUserメソッドを作成したいのですが、privateフィールドがある場合のみ(未定義)。RxJsは、変数が未定義の場合にObservableを返します

private user : User 

init() { 
    // user = loadingUser... 
} 

getSelectedUser(): Observable<User> { 
    // return ??? 
} 

目標は、他のコンポーネントがこの観察可能オブジェクトをサブスクライブし、ロードされた後にユーザーを受信できることです。

誰かがこれをどのように達成できるか考えていますか?

答えて

1

その後に観察するユーザーを定義します。それは準備ができたときに

private user: Subject<User> = new ReplaySubject<User>(1); // ensure that new registered component gets the last loaded user. 

getSelectedUser(): Observable<User> { 
    return user.asObservable(); 
} 

は、ユーザを更新:迅速な答えを

private someUserLoadingFunction(){ 
    ... retrieve user logic -> currentUser... 
    this.user.next(currentUser); 
} 
+0

おかげで多くのことを。それは動作するようです。しかし、今、私のコンポーネントはレンダリングの前にそこに値が来るのを待つべきです。私はそれをどのようにすることができるか知っていますか? –

+0

私は情報が欠落していますが、 '* ngIf =" user | async "' – Meir

+0

ありがとうございます。それはうまくいった。 –

関連する問題