angle2テンプレートでネストされた非同期パイプがどのように解決されるかについて、私はちょっと混乱しています。ドキュメントは現在すぐれた場所ではありません。だから私は誰かが助けてくれることを望んでいます。ネストされたAngular2非同期パイプはどのように解決されますか?
私はサービスから返された非常に単純なRxjs ObservableをObservable.of(myArray).delay(2000)
経由で持っています。遅延は、タイミングに関して何が起こっているかを示すのに役立ちます。私のテンプレートで
、私はちょうどそれが示されたときに制御する囲む<p>
タグに上記返さ観測可能で非同期パイプを使用し、その<p>
タグの内部で返される配列の長さを表示しようとしている:
<p *ngIf="!(lists | async)">Waiting for lists...</p>
<p *ngIf="lists | async">We have lists! How many? => {{(lists | async)?.length}}</p>
ですから、これをロードする際に、2秒後に私たちは「私たちは、リストを持っている!」を取得、表示される「リストを待っています」内部非同期パイプが解決され、配列の長さを解決するためにはもう2秒かかります。
Observableの値を返すことに依存する他のすべてのものと同時に表示するにはどうすればよいですか?それとも、これは非同期パイプの良いユースケースではないですか?代わりに私のコンポーネントの代わりにsubscribe()
を使うべきですか?
ありがとうございます。私の観測で 'delay()'を使うと '* ngIf'の仕組みについてもっと学ぶことができます:) – chucknelson
ソースが観測可能であるという事実は決して*共有*されていないということも重要です。よくオリジナルのシナリオ 'lists'では、observableが2回(' ngIf'のために1回、次に 'length'のために)購読され、各サブスクリプション毎に遅延を含めてストリームが新たに開始されます。 'lists'が共有されたり、再生されたり、熱くなったりした場合、2番目のサブスクリプションは新しい遅延なしにすぐに最終的な配列値を見つけ出します。 – superjos