import { Component, input } from '@angular/core';
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
@Component({ ... })
class MyComponent {
value = input<string>();
constructor() {
toObservable(this.value)
.pipe(takeUntilDestroyed()) // is this superfluous?
.subscribe(console.log);
}
}
文档规定toObservable必须在注入上下文中调用,所以我不确定它是否会自动清理订阅。
toObservable
实现将使用 aDestroyRef
来调用complete
它创建的可观察对象。因此,从某种意义上说,在组件中调用takeUntilDestroyed()
if是没有必要的。toObservable
但是,如果
toObservable
在 root 提供的服务中调用,DestroyRef
则永远不会触发onDestroy
,并且您的可观察对象(几乎)永远不会被销毁。这个例子很好地说明了一个不会自动完成的可观察对象。