我创建了一个Angular自定义表单控件,是否可以在没有输入的情况下获取它所属的FormGroup

时间:2019-04-07 13:10:22

标签: angular

我有一个已创建的自定义控件。

  1. 它接受formControlName="first_name"
  2. 它包装在<form [formGroup]="userProfileForm">

效果很好。

是否可以从定制控件的类中引用formGroup而无需添加和输入:

@Input() formGroup: FormGroup;

2 个答案:

答案 0 :(得分:1)

this stackoverflow answer中可以注入构造函数:

constructor(el:ElementRef,@Host() @SkipSelf() private control:ControlContainer)

因此,在control.control的ngOnInit中,您具有FormGroup

ngOnInit()
    {
      console.log(this.control.control.value)
    }

答案 1 :(得分:0)

在您的form元素上放置一个模板名称:

<form [formGroup]="userProfileForm" #my_form>

然后,在您的组件中,您可以将该元素作为成员变量获取:

@ViewChild('my_form') formVariable;

现在,您可以使用以下方式访问formGroup:

this.formVariable.formGroup

来自组件内部,或者

formVariable.formGroup

在模板中。

评论后编辑:您不想紧密耦合

您所描述的内容相当于组件间的通信:您希望组件(无论是否嵌入)交换信息。通常的最佳方法是使用服务和Subject机制。参见here in the official Angular docs