【发布时间】:2020-03-01 14:26:41
【问题描述】:
使用此资源,我想在多个嵌套级别上实现 formControlName。
Angular 2 - formControlName inside component
假设实际的 formGroup 位于子 formControlName 组件之上 3 个组件级别,
如果父组件就在子组件旁边,则 ControlValueAccessor 有效。然而,高于(祖父)形式的多个级别不起作用。
是否有替代服务或多个输入/输出?还是只有这些方法?
A--> Component with formGroup
B---> Component container
C---> Component container
D ---> Component with FormControlName (should pass to Component A)
组件A会从类似这样的不同子组件中收集多个表单控件名称,
InputText.ts
export class InputTextComponent implements AfterViewInit, ControlValueAccessor {
@Input() disabled: boolean;
@Output() saveValue = new EventEmitter();
value: string;
onChange: () => void;
onTouched: () => void;
writeValue(value: any) {
this.value = value ? value : "";
}
registerOnChange(fn: any) {this.onChange = fn}
registerOnTouched(fn: any) {this.onTouched = fn}
setDisabledState(isDisabled) {this.disabled = isDisabled}
}
InputText.html
<input .. />
【问题讨论】:
-
问题不清楚 - 你能否让 比孩子高 3 层 更明确,即这些嵌套组件是什么,你的形式是什么?您可以制作传递整个表单组值(或映射值)的组件
-
-
其实你没有必要使用
formControlName,你可以简单地使用formControl.get('path.to.prop')作为控件。 -
嗨@Sergey你能写个例子吗,我可以发积分吗?顺便说一句,我有 Angular 8;'做建议的做法是好习惯吗?还是更不推荐的做法?再次感谢
标签: javascript html css angular angular8