angular2 组件库NG-ZORRO如何对复选框做必填校验

当如下写法时,指定为必选,有办法校验么?当没选择时提示信息

html:

     <div nz-form-item nz-row>
        <div nz-form-label nz-col [nzSpan]="4">
          <label for="one" nz-form-item-required>复选测试</label>
        </div>
         <div nz-form-control nz-col [nzSpan]="10" >
          <nz-checkbox-group formControlName="one"  [(ngModel)]="oneOption" ></nz-checkbox-group>
          <div nz-form-explain *ngIf="getFormControl('one').dirty&&getFormControl('one').hasError('required')">通知范围必选</div>
        </div>
      </div>

ts:

validateForm: FormGroup;
oneOption: any;
constructor(
    private fb: FormBuilder,
 ){}
ngOnInit() {
    this.oneOption = [
    { label: 'Apple', value: 'Apple', checked: true },
    { label: 'Pear', value: 'Pear', checked: false },
    { label: 'Orange', value: 'Orange', checked: false },
    ]
    this.validateForm = this.fb.group({
         one: [null, [Validators.required]],
    })
}
  getFormControl(name) {
    return this.validateForm.controls[name];
  }

现在提交时打印发现this.validateForm.value.scopes包含oneOption完整信息,getFormControl('one').dirty为true,但getFormControl('one').hasError('required')一直为false

阅读 8.3k
2 个回答

找到方法了,自己手动自定义了一下对one的检测

建议[(ngModel)] 与formControlName 不要同时使用,

[(ngModel)]="oneOption"
    this.oneOption = [
    { label: 'Apple', value: 'Apple', checked: true },
    { label: 'Pear', value: 'Pear', checked: false },
    { label: 'Orange', value: 'Orange', checked: false },
    ]

这边明显有问题,

[(ngModel)]代表的是选中的值,而不是选项

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进