如果不在ngModel指令中提供模型名称,ngModelChange如何工作

Ram*_*ran 3 html javascript angular-ngmodel angular angular-ngmodelchange

怎么样ngModelChange()

(ngModelChange)是ngModel指令的@Output .它在模型改变时触发.如果没有ngModel指令,则不能使用此事件

但我不确定,ngModelChange它是如何工作的,如果我使用ngModelChange()事件,即使我没有提供模型名称ngModel.

<input #gb type="text" pInputText class="ui-widget ui-text" **ngModel**  
 (ngModelChange)="functionName($event)">
Run Code Online (Sandbox Code Playgroud)

Rah*_*ank 7

是的,ngModelChange()在不向ngModel提供模型名称的情况下工作.

发生这种情况的原因,(ngModelChange)是ngModel指令的@Output.当在输入中插入一些值时,emitEvent变为true,默认为false(因此它不会在初始时触发页面加载).

_this.updateValueAndValidity({emitEvent:false});

你可以在 \ @angular\forms\esm5\forms.js找到►行号3850

如果emitEventtrue,此更改将导致发出valueChanges事件FormControl.默认为true(当它落到时updateValueAndValidity).

如果emitViewToModelChangetrue,则将触发ngModelChange事件以更新模型.如果emitViewToModelChange未指定,则这是默认行为.

如果emitModelToViewChangetrue,则将通过onChange事件向视图通知新值.

现在的问题是,为什么在$ event中得到相同的值,而不是因为ture这个原因导入了

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);
    };
Run Code Online (Sandbox Code Playgroud)

相同的文件行号3911至3919