(更改)事件绑定到经典输入更改事件。
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
}
基本上,两者之间似乎没有太大的区别,但当你使用[ngValue]时,ngModel事件获得了力量。
<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
}