【发布时间】:2020-10-27 17:26:51
【问题描述】:
我有一个指令读取输入控件的脏状态并采取一些行动。
以下是指令的代码。
// our root app component
import { Directive, HostListener, Input } from '@angular/core';
import { NgModel, FormGroup } from '@angular/forms';
@Directive({
selector: '[ngModel][appMarkAsDirty]',
providers: [NgModel]
})
export class MarkAsDirtyDirective {
@Input('appMarkAsDirty')
parentFormGroup: FormGroup;
constructor(private model: NgModel) { }
@HostListener('ngModelChange', ['$event'])
onInputChange($event) {
console.log('this.model', this.model);
if (this.model.dirty) {
this.parentFormGroup.markAsDirty();
}
}
}
问题是,当用户在控件中键入时,指令中的 ngModel 引用不会更新。它始终保持在初始阶段,即 value 始终为 null,并且控件始终被触摸为 false 和肮脏的 false。
这在 Angular 8 之前工作正常。并且,在 Angular 9 中已停止工作。
stackblitz 的链接: https://stackblitz.com/edit/angular-ivy-yxbzny
提前致谢!
【问题讨论】:
-
请您检查无效而不是脏
-
我已经编辑了 stackblitz。请看这里stackblitz.com/edit/…
标签: angular angular-directive angular-forms angular9 angular2-ngmodel