我可以自动检测角度指令中的值而不是使用模板引用变量吗?

Posted

技术标签:

【中文标题】我可以自动检测角度指令中的值而不是使用模板引用变量吗?【英文标题】:Can I autodect a value in an angular directive instead of using a template reference variable? 【发布时间】:2018-05-23 23:14:18 【问题描述】:

我得到了什么

我有一个类似这样的指令:

@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?这样我就可以简单地写&lt;form (ngSubmit)="submit()" appValidateOnSubmit&gt; 而不是更长的&lt;form (ngSubmit)="submit()"[appValidateOnSubmit]="myForm" #myForm="ngForm"&gt;

背景是我的answer here,我正在努力改进。

【问题讨论】:

【参考方案1】:

是的,有一种方法可以通过 @Host 做到这一点

@Directive(
  selector: '[appValidateOnSubmit]'
)
export class ValidateOnSubmitDirective 

  constructor(@Host() form: NgForm) 
    console.log(form);
  

【讨论】:

以上是关于我可以自动检测角度指令中的值而不是使用模板引用变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

在实现 vue 表时获取错误“在编译模板时发出的值而不是错误的实例”

JQuery没有检测到角度指令中的DOM元素

如何使用变量的值而不是它的标识符?

Webpack:如何使角度自动检测 jQuery 并将其用作 angular.element 而不是 jqLit​​e?

Python 2.7 函数是不是记住值而不是引用?关闭怪异

使用指令检测角度 4 中的 Click 外部元素