比方说,组件具有以下属性:
private foo$: Observable<Array<SomeType>>;
private bar: SomeOtherType;
后来他们获得了价值...
this.foo$ = someSubject.pipe(switchMap(...whatever...
this.bar = new SomeOtherType(...whatever...
出于某种原因,我有时想清空这两个属性,通过清空我的意思是删除它们的值,因此将它们设置回它们获得值之前的状态。
让他们undefined
是不可行的。如果这样做,他们将丢失其“类型信息”。我希望TypeScript和Angular知道它们仍在处理Observable和SomeOtherType的对象。
我有什么选择?
答案 0 :(得分:1)
为了“将变量设置回获得值之前的状态”,请将它们设置为undefined
:
this.foo$ = undefined;
this.bar = undefined;
在您进行测试的the stackblitz中,可观察的heroes$
与async
管道一起使用:
<li *ngFor="let hero of heroes$ | async" >
如果然后将heroes$
设置为undefined
,该列表将从视图中消失,并且Observable停止工作。销毁组件时的async
管道unsubscribes automatically;当Observable变量变为undefined
时,它似乎也做同样的事情。
除了async
管道使用Observable的情况之外,将变量设置为undefined
不会停止Observable的工作,如this stackblitz所示。
答案 1 :(得分:0)
我怀疑您可以将类型设置为任何类型,而不是未定义的类型。
例如, 私有foo $:Observable>; 私人酒吧:SomeOtherType;