是的,ngModelChange() 无需向 ngModel 提供模型名称即可工作。
发生这种情况的原因是,(ngModelChange) 是 ngModel 指令的 @Output。
当在输入中插入一些值时 emitEvent 变为 true,默认情况下为 false(因此它不会在初始时间触发页面加载)。
_this.updateValueAndValidity({ emitEvent: false });
您可以在 \@angular\forms\esm5\forms.js ► 第 3850 行找到
如果emitEvent 是true,这个
更改将导致FormControl 上的valueChanges 事件被发出。这个默认
为真(因为它落入updateValueAndValidity)。
如果 emitViewToModelChange 是 true,则会触发 ngModelChange 事件来更新
模型。如果未指定 emitViewToModelChange,这是默认行为。
如果emitModelToViewChange 是true,将通知视图新值
通过onChange 事件。
现在的问题是,为什么在插入输入而不是ture 的 $event 中获得相同的值,导致
FormControl.prototype.setValue = /**
function (value, options) {
var _this = this;
if (options === void 0) { options = {}; }
(/** @type {?} */ (this)).value = this._pendingValue = value;
if (this._onChange.length && options.emitModelToViewChange !== false) {
this._onChange.forEach(function (changeFn) { return changeFn(_this.value, options.emitViewToModelChange !== false); });
}
this.updateValueAndValidity(options);
};
第 3911 到 3919 行相同的文件行