当前位置: 首页 > 知识库问答 >
问题:

(change)vs(ngModelChange)(角度)

冯招
2023-03-14

Angular 1不接受onchange()事件,它只接受ng-change()事件。

另一方面,Angular 2接受(change)(ngModelChange)事件,这两者似乎在做同一件事。

有什么不同吗?

哪一个性能最好?

NGModelChange:

<input type="text" pInputText class="ui-widget ui-text"
    (ngModelChange)="clearFilter()" placeholder="Find"/>

vs变化:

<input type="text" pInputText class="ui-widget ui-text" 
    (change)="clearFilter()" placeholder="Find"/>

共有1个答案

吴镜
2023-03-14

绑定到经典输入更改事件的(change)事件。

https://developer.mozilla.org/en-us/docs/web/events/change

即使在输入端没有模型,也可以使用(change)事件作为

<input (change)="somethingChanged()">

(ngModelChange)是ngModel指令的@output。它在模型更改时激发。如果没有ngModel指令,则无法使用此事件。

https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124

当您在源代码中发现更多信息时,(ngModelChange)会发出新值。

https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169

所以这意味着你有这样的使用能力:

<input (ngModelChange)="modelChanged($event)">
modelChanged(newObj) {
    // do something with new value
}

基本上,两者之间似乎没有很大的区别,但是NGModel事件在使用[ngValue]时获得了强大的功能。

  <select [(ngModel)]="data" (ngModelChange)="dataChanged($event)" name="data">
      <option *ngFor="let currentData of allData" [ngValue]="currentData">
          {{data.name}}
      </option>
  </select>
dataChanged(newObj) {
    // here comes the object as parameter
}

假设您在没有“ngmodel东西”的情况下尝试相同的东西

<select (change)="changed($event)">
    <option *ngFor="let currentData of allData" [value]="currentData.id">
        {{data.name}}
    </option>
</select>
changed(e){
    // event comes as parameter, you'll have to find selectedData manually
    // by using e.target.data
}
 类似资料:
  • 问题内容: Angular 1不接受事件,它仅接受事件。 另一方面,Angular 2接受和事件,两者似乎都在做相同的事情。 有什么不同? 哪个最适合表现? ngModelChange : vs Change : 问题答案: 事件绑定到经典输入更改事件。 即使您没有输入模型,也可以使用(更改)事件,如下所示: 是ngModel指令的。模型更改时将触发。如果没有ngModel指令,则无法使用此事件。

  • 问题内容: Angular 1不接受事件,它仅接受事件。 另一方面,Angular 2接受和事件,两者似乎都在做相同的事情。 有什么不同? 哪个最适合表现? ngModelChange: vs change: 问题答案: 事件绑定到经典输入更改事件。 即使您没有输入模型,也可以使用(更改)事件,如下所示: 是ngModel指令的。模型更改时将触发。如果没有ngModel指令,则无法使用此事件。 当

  • 问题内容: 输入如下: 当我手动键入并更改输入时,将执行。但是,如果我以编程方式通过其他功能更改了repair.test值,则不会触发ng- change的操作。我已经阅读了角度教程,这可能是预期的行为。 https://docs.angularjs.org/api/ng/directive/ng更改 “当值更改来自模型时,不评估表达式。” <-我也需要这个。模型以任何方式更改时,如何在控制器中触

  • 问题内容: 我只想知道火热的使用方法。在控制器内,以下代码可以正常工作,并且在3秒后更新DOM: 但是通过使用 没发生什么事… 我以为他们做同样的事情。我怎么了? 问题答案: 并有一些异同。它们的相似之处在于它们都检查了更改内容并更新了UI并触发了所有观察程序。 两者之间的区别是它们的调用方式。被调用而没有任何参数。具有在执行任何更新之前将要执行的功能。 另一个区别是它们的影响。将更新当前范围和任

  • 问题内容: 当前,我们可以通过几种方式监视数据更改。我们可以使用触发模型更改,并且可以向元素添加指令并对其绑定一些操作。 在许多情况下,这有点令人困惑,所以我很好奇,这是每个变体的优缺点,何时应该使用绑定,何时使用诸如?的指令? 问题答案: 两者和具有完全不同的用法: 假设您有一个在范围内定义的模型: 现在,如果您想在发生任何更改时执行某些操作,则可以使用: 是一个指令,当用户更改输入时将评估给定

  • 我一直在寻找了解这 3 个: 主题 行为主体 重播主题 我想使用它们,并知道何时、为什么使用它们,使用它们有什么好处,尽管我已经阅读了文档、观看了教程并搜索了谷歌,但我对此没有任何理解。 那么他们的目的是什么?一个真实的案例将是最受欢迎的,它甚至不需要编写代码。 我更喜欢一个干净的解释,而不仅仅是“a b = 非常感谢。