加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 在子组件中具有多个formControl的ControlValueAccess

发布时间:2020-12-17 10:17:40 所属栏目:安全 来源:网络整理
导读:我在子组件中有多个formcontrols,如何在子组件中应用验证器,因此原始表单将变为无效.使用ControlValueAccessor实现它是理想的,但是想从简单的@input表单组开始. @Component({ selector: 'my-child',template: ` h1Child/h1 div [formGroup]="childForm" inpu
我在子组件中有多个formcontrols,如何在子组件中应用验证器,因此原始表单将变为无效.使用ControlValueAccessor实现它是理想的,但是想从简单的@input表单组开始.
@Component({
  selector: 'my-child',template: `

  <h1>Child</h1>
  <div [formGroup]="childForm">
    <input formControlName="firstName">
    <input formControlName="lastName">
  </div>
  `
})

export class Child {
  @Input()
  childForm: FormGroup;
}

http://plnkr.co/edit/K1xAak4tlUKtZmOV1CAQ

我不知道为什么这个问题被投票,但我觉得它可能对其他人有帮助所以我发布了答案.
在多次尝试绑定子表单组后,我能够成功绑定值
@Component({
  selector: 'my-child',template: `

  <h1>Child</h1>
  <div [formGroup]="name">
    <input formControlName="firstName">
    <input formControlName="lastName">
  </div>
  `,providers: [
    {provide: NG_VALUE_ACCESSOR,useExisting: Child,multi: true}
  ]
})

export class Child implements ControlValueAccessor {
  name: FormGroup;
  constructor(fb: FormBuilder) {
    this.name = fb.group({
      firstName:[''],lastName: ['']
    });
  }

  writeValue(value: any) {
    if(value) {
        this.name.setValue(value);
    }
  }

  registerOnChange(fn: (value: any) => void) {
    this.name.valueChanges.subscribe(fn);
  }

  registerOnTouched() {}
}

http://plnkr.co/edit/ldhPf7LTFVtTFHe9zfAj?p=preview

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读