私はAngular2のプロジェクトで作業しており、RxJSの機能(およびFirebaseはバックエンド)を備えた非常に動的なユーザーインターフェイスをたくさん作成しようとしています。サービスからswitchMapで観測値を返すと、配列にラップされた戻り値が返されます
今すぐ次のシナリオを取る:
this.af.auth
.filter(Boolean)
.switchMap((auth) => this.af.database.object('/usersUid/' + auth.uid));
ユーザーが正しくので、保存されたユーザ情報を取得するために、内側に観察に切り替えにしている場合ログインしている場合、これは他(例えば、管理プロパティをチェックします)
これはうまくいきます(テンプレートではsubscribe()とasyncパイプの両方)。
私は、observableを専用のサービスに移動して取得しようとすると、観測可能な「ラップされた」配列を返します。
// in original component
let userObservable = this.databaseSrv.getUserObservable(); // the userObservable will be wrapped as an Array and the component logic breaks
// in database-service
getUserObservable(){
return this.af.auth
.filter(Boolean)
.switchMap((auth) => this.af.database.object('/usersUid/' + auth.uid));
}
私は私が観察を返す方法と間違って何かが確かにそこにある...マップ/ flatmap /マージでさまざまなバリエーションを試してみましたが、私はそれのまわりで私の頭を包むように見えることはできません。
この動作についての説明は、非常に高く評価されます。
助けるあなたをありがとうこれ!悲しいことに私はまだあなたをアップアップすることはできません:-( – jparg
問題はない、うれしい私はあなたを右につかまえました少なくともトラック:D – Alex