非同期パイプが null のときに読み込みスピナーを表示する簡単なセットアップがあります。
<div *ngIf="(searchResults$ | async) as searchResults; else loading">
</div>
<ng-template #loading>
loading..
</ng-template>
ただし、ユーザーがもう一度検索すると、loading.. が表示されません。null を発行してスピナーを再度表示するには、この searchResults$ オブザーバブルが必要か、別の isLoading 変数が必要だと思います。
それを行う最良の方法は何ですか?
問題がある場合は、debounce と switchMap を用意しました (つまり、ファイナライズなどを使用するのは難しい)
this.searchResults$ = this.filters$
.pipe(
debounceTime(200),
distinctUntilChanged(),
switchMap((f) => {
return httpGet(f)
})
)
また、試し*ngIf="!isLoading && (searchResults$ | async) as searchResults
てみましたが、問題があることがわかりました。