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】栏目查找您需要的精美模板。