【问题标题】:How to remove validators in angular 4 dynamic form如何以 Angular 4 动态形式删除验证器
【发布时间】:2017-12-28 10:46:05
【问题描述】:

我有以下表单组。

this.rForm = fb.group({
'categoryName': [null, Validators.required],
'categoryImage': [null, Validators.required],
'mainCategoryId': [null, Validators.required],
'subCategoryName': [null, Validators.required]
});

而“mainCategoryId”指的是一个下拉列表。当我更改该下拉菜单中的值时,根据该值,我想保留或删除“subCategoryName”的验证器。然后我在 ngOnInit() 中使用下面的代码。

this.rForm.get('mainCategoryId').valueChanges.subscribe(
    (mainCategoryId) => {
       if(!this.isSub){
          this.rForm.get('subCategoryName').clearValidators();
          this.rForm.get('subCategoryName').updateValueAndValidity;
       }
    }
 );

它位于 IF 语句中,但不会删除验证器。仍然检查是否需要。我究竟做错了什么?我只是想删除所需的验证。

【问题讨论】:

    标签: angular forms validation


    【解决方案1】:

    试试这个

    this.rForm.controls['subCategoryName'].clearValidators();
    

    或者您可以使用 setvalidators 并将其设置为 null

    this.rForm.controls['subCategoryName'].setValidators(null);
    

    【讨论】:

    • 没有。它没有任何区别。结果相同
    • 是必需的,在移除验证器之前触发验证
    • 如果验证被触发,它不会删除它
    猜你喜欢
    • 2018-08-11
    • 2018-01-17
    • 2020-09-27
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多