gpt4 book ai didi

javascript - 我应该取消订阅 Angular 表单更改吗?

转载 作者:行者123 更新时间:2023-11-29 10:29:03 25 4
gpt4 key购买 nike

订阅 Angular Abstract Control 中的更改时使用 valueChanges , 是否需要unsubscribe()

我经常这样做:

// this.form is a FormGroup within a Component.

this.form.valueChanges.subscribe(_ => {
console.log(this.form.value);
});

但是我应该自己管理订阅吗(就像我一般使用 ngrx 一样)?:

import { Subscription } from 'rxjs';

// this.subscription is ngrx Subscription.

this.subscription = this.form.valueChanges.subscribe(_ => {
console.log(this.form.value);
});

public ngOnDestroy() {
if (this.subscription) {
this.subscription.unsubscribe();
}
}

我之前没有这样做的唯一原因是因为关于 Angular Forms 的教程、示例和文档通常省略存储对订阅的引用,而是只使用 valueChanges原样。

相反,ngrx 教程似乎强调取消订阅以避免内存泄漏的重要性。

最佳答案

是的,这是必要的,但您可以改用 take until。

private unsubscribe$: Subject<void> = new Subject<void>();

this.subscription = control.valueChanges
pipe(takeUntil(this.unsubscribe$))
.subscribe(_ => {
console.log(this.form.value);
});

ngOnDestroy() {
this.unsubscribe$.next();
this.unsubscribe$.complete();
}

https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87

关于javascript - 我应该取消订阅 Angular 表单更改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51045723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com