在Angular中创建自定义表单输入

时间:2018-03-13 10:45:57

标签: angular

我正在以角度创建自己的表单构建器。 我有HTML代码:

<form [formGroup]="formGroup">
    <my-input-field
            [field]="{type:'text'}"
            [formControlName]="'first'"></my-input-field>
</form>

我不知道如何在MyInputFieldComponent中获取父级formGroup(我不想将其作为额外属性传递。更少的样板更好)。 我可以自己获取parentElement,但如何让父component获取formGroup

constructor(protected elementRef: ElementRef) {}

ngOnInit() {
   console.log(this.elementRef.nativeElement.parentElement);
}

1 个答案:

答案 0 :(得分:2)

哟不需要为此注入父组件,在这种情况下,最好的选择是实现ControlValueAccessor接口。

https://angular.io/api/forms/ControlValueAccessor

你可以在这里看到如何做到这一点: https://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html

ControlValueAccessor是在Angular中创建自定义表单字段的界面,如果您在组件@angular/forms中实现它,可以将其用作html本机输入,使用ngModel访问值或formControlName