我可以自动检测 angular 指令中的值而不是使用模板引用变量吗?
Can I autodect a value in an angular directive instead of using a template reference variable?
我得到了什么
我有一个这样的指令:
@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">
?
背景是我的,我正在努力改进。
是的,有一种方法可以使用 @Host
@Directive({
selector: '[appValidateOnSubmit]'
})
export class ValidateOnSubmitDirective {
constructor(@Host() form: NgForm) {
console.log(form);
}
}
我得到了什么
我有一个这样的指令:
@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">
?
背景是我的
是的,有一种方法可以使用 @Host
@Directive({
selector: '[appValidateOnSubmit]'
})
export class ValidateOnSubmitDirective {
constructor(@Host() form: NgForm) {
console.log(form);
}
}