我有一個指令應該根據輸入的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)'時調用' –