gpt4 book ai didi

angular - FormControl valueChanges.subscribe 与 keyup

转载 作者:行者123 更新时间:2023-12-02 16:55:27 27 4
gpt4 key购买 nike

我以前没想过的简单问题。

我开始了一个项目并找到了代码:

<input (keyup)="someFunc($event)" [formControl]="someControl">

因为我在重构所有的表单,所以我首先想到的是去掉(keyup),改用someControl.valueChanges.subscribe(..),但是现在我有疑惑了因为如果我这样做,我只是向组件添加更多代码(例如导入订阅,OnDestroy 也取消订阅,然后是 someControl.valueChanges.subscribe)。因此与 keyup 相比,valueChanges.subscribe 增加了更多的代码。

它有什么我没有意识到的好处吗?

附注我知道,使用 keyup 时,它会在用户释放按钮时触发,而 valueChanges.subscribe 当用户按下按钮时触发。但就我而言,这种差异并不重要。

最佳答案

我会使用 valuesChanges() 而不是 keyup 因为你不太可能错过任何东西,因为它正在监听表单控件值的更改而不是事件。因此,无论它是如何以务实的方式或通过 dom 进行更改,都会注意到更改。

虽然这不是 http 请求,但需要使用 unsub 处理,订阅完成后不会手动取消订阅。我会尝试类似的东西。

public subscriptions = new Subscription();

this.subscriptions.add(this.formControl.valueChanges
.pipe(distinctUntilChanged()) // makes sure the value has actually changed.
.subscribe(data => console.log(data)));

public ngOnDestroy(): void
{
this.subscriptions.unsubscribe();
// ensure when component is destroyed the subscription is also and not left open.
}

可以找到取消订阅的例子here

关于angular - FormControl valueChanges.subscribe 与 keyup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56627029/

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