gpt4 book ai didi

javascript - 如果来自去抖动的可观察对象的更改正在进行中,则 Angular NgModel 不会更改

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

我正在使用 ChangeDetectionStrategy.OnPush 和带有 debounceTimeRxJS Subject 来处理一个公认的奇怪设置。

this Plunker ,我对以下行为感到惊讶:

  • 在第一个输入框(“Model 1”)中输入并验证它更新了模型,并且重置按钮有效
  • 在第二个框中键入,并注意如果正在进行更改,则重置按钮不起作用
  • 一旦 10 秒去抖动变化完成,第二个重置按钮按预期工作

第二个重置按钮被认为不起作用,因为我没有立即更新 ngModelChange 监听器中 model2 的值,而是将更改事件传递给 Subject 并去抖动它,然后仅在 10 秒去抖动后更新它。但是我很困惑为什么当像这样进行更新时重置按钮不起作用。怎么回事?

最佳答案

这实际上发生了,因为 this.model2 的值实际上并没有从 "Model 2" 改变,即使输入的值似乎已经明显改变.因为传递给 ngModel 的值没有改变,所以输入的新值没有被覆盖。这里的解决方案是保持变量 model2 更新为当前值:

handleChange2(value: string) {
this.model2 = value;
this.model2Subject.next(value);
}

关于javascript - 如果来自去抖动的可观察对象的更改正在进行中,则 Angular NgModel 不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535576/

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