角度4のコンポーネントにオブザーバブル(またはサブジェクト)があり、これにasync
パイプのテンプレートで使用しています。角度2+テンプレートのオブザーバブルを削除/破棄する方法
<div *ngIf="(orderObservable | async) as order; else noOrder ">
The active order was created at {{ order.created_at }}
</div>
<ng-template #noOrder>
There is no active order at the moment. Sorry.
</ng-template>
これは、注文が存在しないか、HTTPコール経由で取得されている限り、魅力的です。コードでは、これは次のようになります。
this.orderObservable = OrderService.getActive();
この呼び出しが順序で観察を返した場合、それはテンプレートに表示されます。表示されない場合は、#noOrderテンプレートが表示されます。
私の質問は、オブザーバブルをサブジェクトに変更し、現在アクティブなオーダーがもう存在しない場合(つまり、サブミットまたはクローズされているため)、サブジェクトを削除する方法や、テンプレートは、観察可能なコンテンツを表示するのではなく、#noOrderテンプレートを表示します。
ご返信ありがとうございます。しかし、これは私のためには機能しません、たとえ主題が完全であっても、主題を最後に通ったものはテンプレートに表示されます。 –
@ R.Wenger 'exhaust'演算子を使って、最初の観測値が完了した後に' false'値を出力することができます。 'Observable.of(this.subject、false).exhaust()' – cgTag