作者:jiuqiu | 来源:互联网 | 2022-12-01 19:42
我
包装了一个自定义控件组件
。SomeInput已封装,具有自己的API并支持反应形式。
ExtSomeInput作为高层次的包装上创建SomeInput。
我有以下HTML:
和ExtSomeInput的html:
问题是如何将formControlName转发到内部SomeInput组件?我需要将窗体和内部formControl绑起来。这可能吗?
编辑:
我创建了这个问题的stackblitz项目:这里
1> yurzui..:
您的内部组件可以使用,@Input
controlName
但无法立即使用:
错误:formControlName必须与父formGroup指令一起使用。
为了将控件与父FormGroup绑定在一起,可以定义viewProvider
如下:
import { Component, Input, OnInit} from '@angular/core';
...
import { ControlContainer, FormGroupDirective } from '@angular/forms';
@Component({
...
viewProviders: [
{
provide: ControlContainer,
useExisting: FormGroupDirective
}
]
})
export class DateWrapperComponent implements OnInit {
@Input() controlName: string;
}
分叉的Stackblitz
只是想为那些迷惑于此答案的人提供一些注意事项...虽然可以,但是如果您使用formControlName作为输入变量名称,则会在控制台中出现错误。只需为中间组件使用其他输入变量名称,例如“ controlName”。