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

前端之家收集整理的这篇文章主要介绍了forms – 从自定义组件中设置Angular 2控件的有效性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个自定义的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 {

在组件中注入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 });
        }
      });

猜你在找的Angularjs相关文章