【发布时间】:2018-02-27 14:07:55
【问题描述】:
我创建了一个简单的指令来修剪我的输入文本(我计划稍后扩展它的功能 - 所以请不要推荐一个简单的 onkeyup 函数),我想让一个指令工作。
我这样使用我的指令:
<input type="text" class="form-control" inputTextFilter [(ngModel)]="data.name">
我的指令如下:
import { Directive, HostBinding, HostListener } from '@angular/core';
@Directive({
selector: '[inputTextFilter]'
})
export class InputTextFilterDirective {
value: string;
constructor() {
console.log('contrusted InputTextFilterDirective');
this.value = '';
}
@HostListener('change')
onChange($event) {
console.log('in change InputTextFilterDirective');
this.value = $event.target.value.trim();
console.log(this.value);
}
}
我看到构造函数消息记录到窗口中,但更改消息从未出现,我的值从未更改(空格未从末尾修剪)。我怀疑 hostListeners 和 hostProperties 不正确,因为我看到了很多相互矛盾的例子......但无法确认正确的方法。
这是怎么回事?
【问题讨论】:
-
您可能正在寻找管道。您必须将 ngModel 解耦为
[ngModel]="data.name | trimPipe" (ngModel)="data.name=$event" -
我明白你的意思 - 之后我会玩管道,但现在我认为指令应该起作用......只是无法弄清楚如何
标签: angular angular2-directives