当前位置: 首页 > 知识库问答 >
问题:

禁用在“角度”对话框中选择单选按钮的验证

鲁波光
2023-03-14

我有一个有3个字段的表单:类型(单选按钮)、名称和地点。如果我选择值'Y'从单选按钮验证应出现的名称和地点。如果我选择值'N'从单选按钮验证不应该显示的地方。请帮我实现功能。工作stackblitz:https://stackblitz.com/edit/angular-ivy-jzjh4j?file=src/app/app.component.ts

<input type="radio" formControlName="type" name="type" value="Y"/>
Yes
  <input type="radio" (change)="onChange($event)"
  formControlName="type" name="type" value="N"/>
No

  <small class="errormessage" *ngIf="submitted && addForm.controls.type.hasError('required')">
                            type is required
  </small>

TS

  onChange(evt)
  {
  var target = evt.target;
      if (target.checked) 
      {
        alert('hi');
        this.addForm.controls.place.valid === true;
      }
      else
      {
        this.addForm.controls.place.valid === false;
      }
}

共有1个答案

越朗
2023-03-14

实际上,您不应该将reactiveForm与模板表单混合使用。因此,如果您使用fromGroup,请不要在HTML输入上使用(更改)。您必须订阅您的打字脚本中的更改。此外,仅当选择了Y类型时,才需要输入place。因此,如果用户选择了N,您必须删除所需的验证器,这样您的表单才有效。

以下是您最新的stackblitz:

  constructor(private formBuilder: FormBuilder) {}
  addForm: FormGroup;
  submitted = false;
  mySubscription: Subscription;

  ngOnInit(): void {
    this.addForm = this.formBuilder.group({
      type: ["", [Validators.required]],
      name: ["", [Validators.required]],
      place: ["", [Validators.required]]
    });
    this.mySubscription = this.addForm
                              .get('type')
                              .valueChanges
                              .subscribe(newValue => {
      if (newValue === 'N') {
        // place is not required anymore
        this.addForm.get('place').setValidators([]);
      } else {
        // place is required
        this.addForm.get('place').setValidators([Validators.required]);
      }
      // force valitators to be triggered, to update form validity.
      this.addForm.get('place').updateValueAndValidity();
    });
  }

  onSubmit() {
    this.submitted = true;
    if (this.addForm.invalid) {
      return;
    }

  }

  ngOnDestroy() {
    if (this.mySubscription) {
      this.mySubscription.unsubscribe();
    }
  }

 类似资料:
  • 这是不同的,因为它不是一个窗体,这个问题没有得到回答,因为没有for循环。

  • 问题内容: 我正在尝试从3个按钮的列表中进行选择,但是找不到选择它们的方法。以下是我正在使用的HTML。 我可以使用以下代码找到它: 输出:SRF,COM,MOT 但我想选择ChoiceOne。(单击它)我该怎么做? 问题答案: 使用CSS选择器或XPath 直接按属性选择,然后单击它。 更正(但是OP应该学习如何在文档中查找) 在Python绑定中,它不存在,称为。一个人应该能够查看异常消息并在

  • 此输出:SRF、COM、MOT 但我想选一个。(点击它)我怎么做?

  • 我是Selenium IDE的新手,在这里需要选择单选按钮的帮助。就我而言,我正在尝试为由单选按钮组成的特定表单生成一个测试用例。当我运行命令以单独选择其中一个单选按钮时,该函数可以工作,但如果我运行整个测试用例,则单选按钮不会被选中并给出找不到Element Id的错误。这是我的html: 我的IDE命令:单击Target: id=ProjectSolutionsProject0。我尝试了ver

  • 本文向大家介绍Android单选按钮对话框用法实例分析,包括了Android单选按钮对话框用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android单选按钮对话框用法。分享给大家供大家参考。具体如下: main.xml布局文件 array.xml数组 AlertDialog类 运行结果: 希望本文所述对大家的Android程序设计有所帮助。

  • 在我的angular应用程序中,我正在尝试添加功能,当我单击Windows图像时,一个新的对话框窗口将显示3个单选按钮。我需要帮助来添加此功能 这是stackblitz链接 链接-https://stackblitz.com/edit/angular-yvinp9?file=src/app/app.component.ts