验证器与表单中的其他值相同
Validators same as other value in form
我想知道是否有一个验证器可以比较来自同一表单的两个不同值 - 假设我有以下内容:
this.loginForm = fb.group({
email: ["", Validators.required],
password: ["", Validators.required],
repeatPassword: ["", Validators.required]
});
我在文档中找到了 this,但它不是很有用。
有什么想法吗?
您需要为一个完整的表单组分配一个验证器来实现它。类似的东西:
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
};
}
有关详细信息,请参阅此问题:
- Angular2 validator which relies on multiple form fields
我想知道是否有一个验证器可以比较来自同一表单的两个不同值 - 假设我有以下内容:
this.loginForm = fb.group({
email: ["", Validators.required],
password: ["", Validators.required],
repeatPassword: ["", Validators.required]
});
我在文档中找到了 this,但它不是很有用。
有什么想法吗?
您需要为一个完整的表单组分配一个验证器来实现它。类似的东西:
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
};
}
有关详细信息,请参阅此问题:
- Angular2 validator which relies on multiple form fields