我正在试验从后端服务接收的值的角2和缓存。我注意到了下面的模式--使用带有未定义初始值的BehaviorSubject并对其进行筛选,以推迟依赖于从后端接收的值的控件的显示。
private _lazyValue: BehaviorSubject<ILazyValue> =
new BehaviorSubject<ILazyValue>(undefined);
get lazyValue(): Observable<ILazyValue> {
return this._lazyValue.filter(val => val !== undefined);
}内部模板:
<div *ngIf="lazyValue | async; else nolv; let lv">
<app-some-control [lazy_value]="lv"></app-some-control>
</div>
<ng-template #nolv>
<span>Loading...</span>
</ng-template>问题:对于这个有点可疑的表达式,有什么捷径吗?
this._lazyValue.filter(val => val !== undefined)我是否以某种方式滥用BehaviorSubject?
发布于 2017-10-11 11:16:27
你可以这样写:
this._lazyValue.filter(Boolean)看起来更干净。
但是,您似乎根本不需要使用BehaviorSubject,而需要使用ReplaySubject(1)。
https://stackoverflow.com/questions/46686772
复制相似问题