代码之家  ›  专栏  ›  技术社区  ›  yankee

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

  •  0
  • yankee  · 技术社区  · 7 年前

    我得到了什么

    我有一个这样的指令:

    @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>
    

    到目前为止,这一切都很好。

    问题

    我可以消除模板引用变量吗 myForm 从HTML?这样我就可以简单地写 <form (ngSubmit)="submit()" appValidateOnSubmit> 而不是更长的时间 <form (ngSubmit)="submit()"[appValidateOnSubmit]="myForm" #myForm="ngForm"> ?

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   penleychan    7 年前

    是的,有一种方法可以通过via实现 @Host

    @Directive({
      selector: '[appValidateOnSubmit]'
    })
    export class ValidateOnSubmitDirective {
    
      constructor(@Host() form: NgForm) {
        console.log(form);
      }
    }