如果字段处于隐藏状态,如何删除必填字段 - Angular 2

How to remove required field if the field is hidden state - Angular 2

我需要以下问题的解决方案。请帮忙解决问题。

案例一:

密码是新用户创建的必填字段。

Password: new FormControl('', Validators.required),

案例二:

更改使用 *ngIf 隐藏的密码可见性

( "ng-reflect-ng-if":"false" )

案例三:

现在,如果我点击“保存”,它会显示需要密码。帮我解决这个问题字段不应该验证它是否被隐藏。

谢谢。

*ngIf="flase" 

这是你如何使用 *ngIf

您正在寻找的是自定义表单验证器。自定义验证器可以根据您的用户场景处理验证。

使用自定义验证器是更简洁的方法。

参考:Angular 2 custom validator

你可以使用 clearValidators()setValidators(),所以不管你的隐藏字段有什么布尔标志,我在这里使用 hidden,当那个标志是 true , 该字段被隐藏。

切换该值时,您可以执行以下操作:

this.hidden = !this.hidden
this.hidden ? this.myForm.get('Password').clearValidators() : 
              this.myForm.get('Password').setValidators([Validators.required])
this.myForm.get('Password').updateValueAndValidity();

演示:https://plnkr.co/edit/Jf2iTy5y3NMDNi5IDyoI?p=preview