【发布时间】:2021-09-13 09:41:21
【问题描述】:
这是我的 widgetquery.ts
@Injectable({ providedIn: 'root' })
export class WidgetQuery extends QueryEntity<WidgetState, WidgetTO> {
public Widget$: Observable<WidgetTO> = this.selectActive().filter(k => !!k);
public WidgetHistorikk$: Observable<WidgetTO[]> = this.selectAll({sortBy: 'WidgetId', sortByOrder: Order.DESC}).filter(k => !!k);
constructor(protected store: WidgetStore) {
super(store);
}
}
在前端我像这样使用 *ngIf:
<ng-container *ngIf="widgetHistorikk$ | async"> ... </ng-container>
我的组件中的构造函数调用这个函数,从服务调用中获取小部件(服务调用成功...)
private fetchWidgetHistorikk() {
this.WidgetService.getWidgetHistorikk().filter(h => !!h).subscribe(liste => {
this.WidgetStore.add(liste);
});
}
但是 selectAll 查询在返回实际数据 [ widget1, widget2 ] 之前返回一个空列表 [ ]。
所以我得到一个空列表,然后是真实数据(填充列表)。
我不想要先出现的空列表(即使实际数据有时可能是空列表)...
为什么我会从秋田获得第一个空列表?
我可以使用某种“标志”或“初始化状态”来告诉秋田:在我的服务调用完成之前不要从查询中返回数据,并且数据通过这一行this.WidgetStore.add(liste); 添加到存储中?
【问题讨论】:
标签: angular typescript state-management angular-akita akita