我有一个指令应该根据输入的ngModel更新一些内部值。当用户手动输入值时,这可以正常工作,但在从组件更改ngModel时停止工作。当ngModel从没有用户输入的组件更改时,ngModelChange不会触发
组件模板:
<input [(ngModel)]="myValue" myExample>
在成分变更ngModel:
ngOnInit() {
this.getDataFromApi()
.then((result) => {
this.myValue = result;
})
}
指令:
import { Directive, OnInit } from '@angular/core';
import { NgModel } from '@angular/forms';
@Directive({
selector: '[myExample][ngModel]',
providers: [NgModel],
host: {
'(ngModelChange)' : 'onModelChange($event)',
}
})
export class myExampleDirective implements OnInit {
private _valueInDirective;
constructor(private _element: ElementRef, private _model: NgModel) { }
onModelChange(event) {
this._valueInDirective = event;
}
}
如果ngModel从控制器的API调用之后更新,ngModelChange在指令不会触发并且_valueInDirective不会更新。如何确保每次ngModel更新时,指令中的值也会被更改?
它不应该。 'ngModelChange'只在输入元素值发生变化时发出。 –
@GünterZöchbauer,但在ngModel更改后,输入元素的值也会更改,对不对? – Senthe
当检测到[ngModel] =“myValue”检测到“myValue”发生变化时,它将更新ngModel属性。角度不会观察随机场的变化,它只会观察绑定。 '(ngModelChange)'([(ngModel)]')的'()'部分仅为** **当'NgModel'指令调用'this.ngModelChange.next(someValue)'时调用' –