我将 rxjs 从版本 6.xx 更新到 7.xx,但出现以下错误:
src/app/app.component.ts 中出现错误 (12:19) 需要 1 个参数,但得到 0 个。
当尝试将next空值传递给Subject
destroy$ = new Subject();
constructor() {
this.destroy$.next(); // <-- Expected 1 arguments, but got 0.
}
Run Code Online (Sandbox Code Playgroud)
为了避免组件内部的 Observable 内存泄漏,我takeUntil()在订阅 Observable 之前使用了运算符。
我在我的组件中写了这样的东西:
private unsubscribe$ = new Subject();
ngOnInit(): void {
this.http
.get('test')
.pipe(takeUntil(this.unsubscribe$))
.subscribe((x) => console.log(x));
}
ngOnDestroy(): void {
this.unsubscribe$.next();
this.unsubscribe$.complete(); // <--- ??
}
Run Code Online (Sandbox Code Playgroud)
最后我的问题如下:
我需要写this.unsubscribe$.complete();还是next()就够了?
是unsubscribe$要由垃圾收集器没有完成被抓住?
请解释是否存在差异或无关紧要。我不希望我的组件出现内存泄漏。