ngModelChange()如何工作?



但是我不确定,如果我使用ngModelChange事件,即使我不是providing model name to ngModelChange() ,它(ngModel)如何工作。

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

最佳答案

是的,ngModelChange()无需向ngModel提供模型名称即可工作。

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



您可以在 \ @angular \ forms \ esm5 \ forms.js中找到►第3850行

如果emitEventtrue,则此
更改将导致valueChanges上的FormControl事件被发出。这个默认
为true(因为它属于updateValueAndValidity)。

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

如果emitModelToViewChangetrue,则将通知 View 有关新值
通过onChange事件。

现在的问题是,为什么在插入输入而不是ture的$ event中获得相同的值,导致


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

07-26 02:44