我想知道是否有一个验证器可以比较来自同一表单的两个不同值 - 假设我有以下内容:
this.loginForm = fb.group({
email: ["", Validators.required],
password: ["", Validators.required],
repeatPassword: ["", Validators.required]
});
我在文档中找到了这个,但是它不是很有帮助。
有任何想法吗?
我想知道是否有一个验证器可以比较来自同一表单的两个不同值 - 假设我有以下内容:
this.loginForm = fb.group({
email: ["", Validators.required],
password: ["", Validators.required],
repeatPassword: ["", Validators.required]
});
我在文档中找到了这个,但是它不是很有帮助。
有任何想法吗?
您需要将一个验证器分配给一个完整的表单组来实现这一点。像这样的东西:
this.form = fb.group({
name: ['', Validators.required],
email: ['', Validators.required]
matchingPassword: fb.group({
password: ['', Validators.required],
repeatPassword: ['', Validators.required]
}
}, {validator: this.areEqual})); <--------
这样,您将可以访问该组的所有控件,而不仅仅是一个...这可以使用controls
组控件的属性进行访问。触发验证时直接提供后者(不是单个)。例如:
areEqual(group: ControlGroup) {
var valid = false;
for (name in group.controls) {
var val = group.controls[name].value
(...)
}
if (valid) {
return null;
}
return {
areEqual: true
};
}
有关更多详细信息,请参阅此问题: