Angular 角数据库中的条件验证问题
我在Angular 9中有一个表单,我想根据下拉框的条件对其进行验证。在我的例子中,表单有一个字段massEmailType,可以有两个值,Farm或Contact。我想要的是,如果用户选择一个农场列表,那么它是一个必填字段Angular 角数据库中的条件验证问题,angular,Angular,我在Angular 9中有一个表单,我想根据下拉框的条件对其进行验证。在我的例子中,表单有一个字段massEmailType,可以有两个值,Farm或Contact。我想要的是,如果用户选择一个农场列表,那么它是一个必填字段 createForm(): FormGroup { return this.fb.group( { emailCampaign: [{value: '', disabled: false}, Validators.requ
createForm(): FormGroup {
return this.fb.group(
{
emailCampaign: [{value: '', disabled: false}, Validators.required],
massEmailType: [{value: '', disabled: false}, Validators.required],
tractList: ['', RxwebValidators.required({conditionalExpression: 'x => x.massEmailType === "Farm"' })],
massEmailSender: [{value: '', disabled: false}, Validators.required],
})
}
初始验证有效,因此如果用户选择Contact,它将在不使用tractList中的值的情况下进行验证。但如果用户改变主意回到农场,它仍然会显示表单有效。初始验证后,是否需要执行任何操作以确保任何更改都可能再次使表单无效?使用rxjs订阅massEmailType控件的更改,并验证该值,并根据该值设置验证程序
ngOnInit(): void {
const form = this.createForm()
form.controls.massEmailType.valueChanges.subscribe((data) => {
if (data === 'Farm') {
form.controls.tractList.setValidators([Validators.required]);
} else {
form.controls.tractList.setValidators([]);
}
});
}
createForm(): FormGroup {
return this.fb.group(
{
emailCampaign: [{ value: '', disabled: false }, Validators.required],
massEmailType: [{ value: '', disabled: false }, Validators.required],
tractList: [''],
massEmailSender: [{ value: '', disabled: false }, Validators.required],
});
}