我可以自动检测 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);
  }
}