【发布时间】:2019-09-26 11:07:35
【问题描述】:
我试图通过将几个验证输入压缩成一个指令来稍微简化我的模板过程,我可以将它们放在需要它们的 <input> 元素上。
有问题的输入如下所示:
<input [(ngModel)]='options.org_name' required id="org_name" type="text" nbInput fullWidth
placeholder="What is your organization called?"
[appValidating]='this'
minlength="3" maxlength="40" />
我的指令是[appValidating]。 appValidating 的代码是这样的:
@Directive({
selector: '[appValidating]'
})
export class ValidatingDirective {
@Input('appValidating') validator: IValidatingComponent;
@Input() id: string;
@HostBinding('status')
get status() {
return this.validator.validity[this.id] === true ? null : 'danger';
}
@HostListener('input', ['$event'])
onInput(event: any) {
this.validator.checkValidity(this.id, event);
}
constructor() { }
}
我的问题是它不允许我在“状态”上使用@HostBinding,它是也位于元素上的 nbInput 指令的输入。
Uncaught (in promise): Error: Template parse errors:
Can't bind to 'status' since it isn't a known property of 'input'.
有没有一种好方法可以让我从我的指令中绑定到该指令的输入?
【问题讨论】:
-
你是
import { FormsModule } from '@angular/forms';并添加到@NgModule({ imports: [ FormsModule ], }) -
@SouravDutta 是的