我有一个像这样的指令:
@Directive({
selector: '[appValidateOnSubmit]'
})
export class ValidateOnSubmitDirective {
@Input('appValidateOnSubmit')
set appValidateOnSubmit(form: NgForm) {
// do something with the form
}
}
用法:
<form (ngSubmit)="submit()" [appValidateOnSubmit]="myForm" #myForm="ngForm">
<!-- ... -->
</form>
到目前为止完全正常。
我可以以某种方式从HTML中删除模板引用变量myForm
吗?这样我只能写<form (ngSubmit)="submit()" appValidateOnSubmit>
而不是更长<form (ngSubmit)="submit()"[appValidateOnSubmit]="myForm" #myForm="ngForm">
?
背景是我想要改进的answer here。
答案 0 :(得分:3)
是的,有一种方法可以通过@Host
@Directive({
selector: '[appValidateOnSubmit]'
})
export class ValidateOnSubmitDirective {
constructor(@Host() form: NgForm) {
console.log(form);
}
}