gpt4 book ai didi

forms - 从自定义组件中设置 Angular 2 控件的有效性

转载 作者:太空狗 更新时间:2023-10-29 17:10:09 26 4
gpt4 key购买 nike

我有一个自定义的 Ng2 组件,我正在使用模型驱动方法。

<form [ngFormModel]="myForm" class="layout vertical relative">
<my-custom-comp ngControl="currentValue"></my-custom-comp>
</form>

所以在我的自定义组件中,我拥有我需要的所有逻辑,但我无法找到一种方法来获取对 ngControl 的引用,以便从我的自定义组件中将其设置为有效或无效。

最佳答案

您可以查看此链接以获取工作示例:https://github.com/byavv/angular2-playground/tree/master/client/app/modules/forms_explore

一些关键方面:
您需要实现 ControValueAccessor。

export class Datepicker implements ControlValueAccessor {

在您的组件中注入(inject) ngControl 并注册它:

constructor(private ngControl:NgControl)
ngControl.valueAccessor = this;

在您的组件中,您应该有一个验证该字段的表单,以便您可以订阅以发出正确的值或设置父 ngControl 表单的错误。

 this.dateForm = builder.group({
dateControl: ['', Validators.compose([Validators.required, CustomValidators.frenchDate])],
});

this.dateForm.valueChanges
.subscribe((val) => {
if (this.dateForm.valid) {
this.onChange.emit(this.dateToTimestamp(val.dateControl));
} else {
this.ngControl.control.setErrors({ "wrongDate": true });
}
});

关于forms - 从自定义组件中设置 Angular 2 控件的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670225/

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