【问题标题】:Angular - Detect <input /> value change with one way bindingAngular - 使用单向绑定检测 <input /> 值变化
【发布时间】:2023-03-24 00:51:01
【问题描述】:

我有这个

<input [value]="SomeModel.ValueFunct()" readonly="readonly"/>

有效!当函数返回值改变时,显示的值也会改变。

如何检测值是否发生变化?

更新:

使用:

ngOnChanges(changes: SimpleChanges) : void{

(gModelChange)="function($event)"

(change)="function($event)"

[ngModel]="SomeModel.ValueFunct()"

当函数改变时不起作用,只有当用户改变输入时才起作用(但在这种情况下是只读的)

普朗克:

http://next.plnkr.co/edit/Rj3NjtcGXTo9upt9?open=lib%2Fapp.ts&deferRun=1&preview .

.

同样的未解决问题:

ngModel changes, ngModelChange is not called

【问题讨论】:

    标签: angular data-binding oneway


    【解决方案1】:

    所以,不是直接绑定函数,而是绑定输入标签中的实际值。并在您的打字稿文件中,编写 ngOnChanges() 生命周期事件并检测此更改。

    所以,如果你想要单向数据绑定,那么

    <input [ngModel]="variable">
    

    在您的 .ts 文件中,从 angular/core 导入 OnChangesSimpleChanges

    ngOnChanges(changes: SimpleChanges) {
            if(changes[variable]) {
              // Perform your actions.
            }
        }
    

    如果您想在使用单向数据绑定的同时处理 html 中输入字段中更改的数据,则必须使用 (ngModelChange),如下所示:

    <input [ngModel]="variable"(ngModelChange)="function_to_fire_on_model_change($event)">
    

    【讨论】:

    • 我已经试过了!但不起作用。如果“变量”是函数,则不会触发事件。
    • 值改变没有问题,但事件没有得到被解雇了。我什至尝试了(更改)和 SimpleChanges 的功能。
    • 我可以解决我的问题,创建一个自定义事件,当函数内的值更改或手动绑定值或创建自定义组件或循环观察更改或很多可能性时触发该事件!但我想有一个简单的方法!这就是我寻找原生方法的原因。
    • 请为此创建示例小提琴。
    • 你有时间复习吗?
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 2016-11-29
    • 2017-06-03
    • 2021-10-02
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多