(change)
绑定到经典输入更改事件的事件。
https://developer.mozilla.org/en-US/docs/Web/Events/change
即使您的输入没有模型,您也可以使用(更改)事件
<input (change)="somethingChanged()">
(ngModelChange)
是@Output
ngModel 指令。它在模型更改时触发。如果没有 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
}