我有一個可以定義過濾器的模態。模態關閉后,值將像這樣處理:
modalRef.result.then((filters: Filter[]) => {
this.filters$.next(filters);
});
過濾器$是一個 BehaviorSubject<Filter[]>([]);
在模板中,我有一個帶有管道的 NgFor,它過濾行。過濾器將在異步管道的幫助下解決:
<ul *ngIf="rows$ | async as rows">
<li *ngFor="let row of rows | rowFilter: (filters$ | async)">
...
</li>
</ul>
如果過濾器模式再次打開,我想使用之前定義的過濾器作為初始值。但這正是我的問題。如何將過濾器從主題傳遞到過濾器模式?
起初我有這樣的事情:
<button *ngIf="filters$ | async as filters" (click)="openFilterModal(filters)">Filter</button>
但是,當filters$ 為[] 時,該按鈕將不會第一次顯示。
openFilterModal(filters: Filter[]): void {
const modalRef = this.modalService.open(FilterComponent);
modalRef.componentInstance.filters = filters;
}
我的第二種方法是在 openFilterModal() 方法中使用 subscribe() ,但這對我來說看起來有點奇怪:
openFilterModal(): void {
const modalRef = this.modalService.open(FilterComponent);
this.filters$.pipe(take(1)).subscribe(filters => {
modalRef.componentInstance.filters = filters;
}
}
uj5u.com熱心網友回復:
我會和你的第二次嘗試緊密修改:
openFilterModal(): void {
const modalRef = this.modalService.open(FilterComponent);
modalRef.componentInstance.filters = this.filters$.value;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376690.html
標籤:有角的
