从指令添加指令

时间:2017-03-30 19:43:35

标签: javascript angular typescript angularjs-directive

我有一个指令决定是否必须输入,屏蔽等...我遇到了一个需要添加新指令的情况:基本上这个新指令将掩码功能添加到输入中。 / p>

<input type="text" formInput [rules]="rules"  [(ngModel)]="value" />

这是formInput指令:

export class DefaultFormInputDirective {

@Input() private rules;
private el: ElementRef;

constructor(el: ElementRef) {
    this.el = el;
}

ngOnInit() {
    this.defineRules();
}

defineRules() {

    if(this.rules == undefined) {
        return;
    }

    if(this.rules.indexOf('required') != -1) {
        this.el.nativeElement.required = true;
    }

    if(this.rules.indexOf('numeric') != -1) {
        // Here is where I need to add currencyMask directive
    }

}

}

这是我正在使用的包:https://www.npmjs.com/package/ng2-currency-mask

2 个答案:

答案 0 :(得分:2)

不支持动态添加指令。您只能动态添加/删除组件。

答案 1 :(得分:0)

在大多数情况下,我建议将属性直接添加到输入中,因为它对我来说似乎更为适用。

无论如何要实现这一目标,您可以创建某种输入抽象组件,接受type之类的输入,将与ngModel一起使用(您可以找到有关此here或{的更多信息例如{3}}并且将包含任何属性和指令所需的输入。

所以它最终看起来像这样:

<custom-input type="text" formInput [rules]="rules" [(ngModel)]="value"></custom-input>

然后,您可以隐藏您在此组件中实际输入的逻辑:分配所需的属性,指令以及您需要的许多其他内容。