【发布时间】:2017-02-23 05:51:15
【问题描述】:
我编写了一个指令,它只接受实现ControlValueAccessor 的数字。
onBlur 的那个特定元素我会像下面这样更新它的模型。
@HostListener('blur',['$event']) onBlur(event) {
this.directiveModel = this.getOnlyNumberLogic();
this.propagateChange(this.directiveModel); <-- update model
this.renderer.setElementProperty(this.el.nativeElement, 'value', this.directiveModel);
}
上述逻辑完美运行,但是当我在组件元素的 HTML 中添加(blur) 时出现问题,如下所示:
<input type="text" name="number"
#numberId="ngModel"
required
[(ngModel)]="obj.number"
pattern="^\d{11}(?:\d{5})?$"
numberOnly <---- Directive
(blur)="numberId.valid && onNumberBlur(numberId.value)"
maxlength="16"/>
每次组件的(blur)首先执行,然后指令的@HostListener('blur'),因此[(ngModel)]没有更新,因为this.propagateChange()在指令的blur中,稍后调用。
问题:
有没有设置指令的模糊应该首先执行的优先级?
【问题讨论】:
标签: angular typescript components angular2-directives