我想知道是否有一个Validator比较来自同一表单的两个不同的值 - 让我说我有以下内容:
this.loginForm = fb.group({
email: ["", Validators.required],
password: ["", Validators.required],
repeatPassword: ["", Validators.required]
});
我在文档中找到了this,但它并没有帮助。
有什么想法吗?
答案 0 :(得分:3)
您需要将验证器分配给完整的表单组才能实现此目的。这样的事情:
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
};
}
有关详细信息,请参阅此问题: