【发布时间】:2017-08-13 16:31:29
【问题描述】:
假设我正在编写一个用于 Angular2 表单元素的自定义属性指令。我希望能够像这样使用我的属性:
<form [formGroup]="myFormGroup">
<input type="text" [myHighlight] formControlName="name" />
</form>
在我的指令中,我有这样的东西:
@Directive({selector: '[myHighlight]'})
export class MyHighlightDirective {
constructor (private el: ElementRef) {
this.el.nativeElement.style.backgroundColor = 'yellow';
}
};
但是现在假设我想对输入控件的所有更改做一些事情。也许我想在每次更改时随机化颜色。
来自Angular2 guide 的HostListener('onChange') 事件在用户在输入框中输入时起作用。但它不会为表单控件上调用的setValue 事件激活,即使emitEvent 设置为true。 The Angular docs on Forms 说 setValue 将导致在表单控件对象上发出 valueChanges 事件。但我不想每次使用时都将它传递给指令,因为这很笨重。
如果指令只有元素引用,还有其他方法可以访问原始表单控件吗?
【问题讨论】:
标签: angular angular2-forms angular2-directives