我可以在angular指令中自动编码一个值而不是使用模板引用变量吗?

时间:2017-12-10 04:26:57

标签: angular angular4-forms

我得到了什么

我有一个像这样的指令:

@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

1 个答案:

答案 0 :(得分:3)

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

来实现
@Directive({
  selector: '[appValidateOnSubmit]'
})
export class ValidateOnSubmitDirective {

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