【问题标题】:Angular 2 ngModel compare old and new valueAngular 2 ngModel 比较新旧值
【发布时间】:2016-12-26 21:49:27
【问题描述】:

所以我一直在玩 Angular 2 一段时间。在<input> 中使用[(ngModel)] 指令非常简单。但是我不知道如何传递或至少获取以前的值,以便我可以比较两者 - 新的和旧的。

我正在通过(ngModelChange) 进行更改检测,因为(change) 在输入字段模糊后触发(顺便说一句,这似乎是一个错误)。所以我的代码目前看起来像这样($event 可以看作是一个占位符,因为我不知道要传递什么)。

<input [(ngModel)]="myModel" (ngModelChange)="changeEvent($event)">

我也尝试过像这样传入一个自定义的本地模板变量,但显然效果不佳:

<input [(ngModel)]="myModel" #myModel="ngModel" (ngModelChange)="changeEvent($event)">

我知道,至少有可能通过使用DoCheck 来实现这一点。但是因为我只需要一次(目前)我真的不想使用那种方法。最重要的是,我在 *ngFor 中使用了上述构造。

【问题讨论】:

    标签: angular angular2-ngmodel


    【解决方案1】:

    您可以使用以下内容:

    HTML 模板: [(ngModel)]="myModel" #model (change)="changeEvent(model.value)"

    Javascript 处理程序:

    changeEvent(newValue) {
      console.log(newValue, this.myModel);
    }
    

    控制台将记录:

    &lt;newValue&gt;, &lt;oldValue&gt;

    【讨论】:

    • 我现在无法测试它,所以我也无法判断它是否有效。这里的主要问题(我显然在我的问题中忘记了)是我在*ngFor 中使用了这个标记。由于您的示例是通过this 访问myModel,因此它将无法正常工作。
    • 只需将循环索引传递给更改函数即可检索数组中的旧值
    • 谢谢,到目前为止,您的解决方案似乎工作正常。不幸的是,这种方法不适合我的用例。
    • @Piou 您能否建议一下,myModel 的初始值必须是什么,因为我在 this.myModel 中得到 undefined 或 newValue
    猜你喜欢
    • 2018-05-27
    • 2023-03-23
    • 2016-12-30
    • 1970-01-01
    • 2017-06-11
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多