首页 > HTML > (change)和(ngModelChange)有什么区别?哪一个最适合性能?

(change)和(ngModelChange)有什么区别?哪一个最适合性能?

上一篇 下一篇

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

另一方面,Angular 2 接受两者和事件,两者似乎都在做同样的事情。(change)(ngModelChange)

有什么区别?

哪一个最适合性能?

ngModelChange:

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

变化

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

分割线

网友回答:

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

https://developer.mozilla.org/en-US/docs/Web/Events/change

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

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

(ngModelChange)是 ngModel 指令。当模型更改时,它将触发。如果没有 ngModel 指令,则不能使用此事件。@Output

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 7 中,将在绑定到的值更改之前触发,而在绑定到的值更改将触发。(ngModelChange)="eventHandler()"[(ngModel)]="value"(change)="eventHandler()"[(ngModel)]="value"

分割线

网友回答:

正如我在另一个主题中发现和写到的那样——这适用于角度< 7(不确定它在 7+ 中的情况如何)

只为未来

我们需要注意的是,这只是一条捷径,可以脱糖到: .[(ngModel)]="hero.name"[ngModel]="hero.name" (ngModelChange)="hero.name = $event"

因此,如果我们对代码进行脱糖,我们最终会得到:

<select (ngModelChange)="onModelChange()" [ngModel]="hero.name" (ngModelChange)="hero.name = $event">

<[ngModel]="hero.name" (ngModelChange)="hero.name = $event" select (ngModelChange)="onModelChange()">

如果您检查上面的代码,您会注意到我们最终会得到 2 个事件,这些事件需要按某种顺序执行。ngModelChange

总结:如果将 ngModelChange 放在 ngModel 之前,则会得到$event作为新值,但模型对象仍保留以前的值。
如果将其放在 之后,则模型将已经具有新值。
ngModel

模板简介:该模板名称为【(change)和(ngModelChange)有什么区别?哪一个最适合性能?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【HTML】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 405次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-16
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信文章 企业网站 微信模板 html5 微信图片 响应式 单页式简历模板 微信公众平台 微信素材 自适应
您可能会喜欢的其他模板