gpt4 book ai didi

angular - 如何在 Angular 4 中将组件声明为 FormControl?

转载 作者:太空狗 更新时间:2023-10-29 19:33:40 24 4
gpt4 key购买 nike

我试图将一个组件声明为表单控件。

<my-child-component formControlName="selectedSeats"></my-child-component>

Based on this answer我使用 ControlValueAccessor 尝试过类似的操作,

public propagateChange: any = () => {};
public validateFn: any = () => {};

get selectedClasses() {

return this.myForm.get('selectedSeats').value;
}
set selectedClasses(val) {
this.propagateChange(val);
}
public ngOnChanges(inputs) {

}
public writeValue(value) {

}
public registerOnChange(fn) {
this.propagateChange = fn;
}
public registerOnTouched(fn) {
}

public validate(c: FormControl) {
return this.validateFn(c);
}

我正在尝试将 this.myForm.get('selectedSeats').value 的值作为组件值传递并尝试绑定(bind)到 formcontrolname。但是这段代码既不工作也不抛出错误。

有人可以告诉我如何将 this.myForm.get('selectedSeats').value 值设置为我的子组件值并传递给 formcontrol 吗?

父组件是动态 react 嵌套形式。在父表单中,我正在调用另一个子组件,它有自己的一组表单,它将返回一个值,并将存储在 selectedSeats 输入字段中。所以现在我需要将该字段值传递给父级并使用 formcontrol 绑定(bind)到父级嵌套表单。

最佳答案

您应该使用 formControl 对象而不是 formControlName。在您的组件中创建一个输入并获取对象。您的代码将如下所示:

export class MyChildComponent {
@Input() formControlObject: FormControl;

getControlValue(){
return this.formControlObject.value;
}
}

现在您将像这样将对象传递给此组件:

<my-child-component [formControlObject]="myForm.controls['selectedSeats']"></my-child-component>

希望对你有帮助

关于angular - 如何在 Angular 4 中将组件声明为 FormControl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48095107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com