Angular Validator - CompareRule
A validation rule that demands that a validated editor has a value that is equal to a specified expression.
To specify the expression that the validated field must match, set the rule's comparisonTarget configuration property. Assign a function to this property. The validated value will be compared to the function's return value. The comparison will be performed by using the operator that is set for the comparisonType property.
See Also
comparisonTarget
Specifies the function whose return value is used for comparison with the validated value.
The rule is valid if the comparison between the validated value and the return value of the comparisonTarget function evaluates to true. The operator specified by the comparisonType property is used to compare values.
comparisonType
Specifies the operator to be used for comparing the validated value with the target.
message
Specifies the message that is shown if the rule is broken.
An error message can be specified as follows:
- Hard-code the message - jQueryindex.js- $(function() { $("#textBox").dxTextBox({ ... }) .dxValidator({ type: "compare", message: "My custom message" }); });- Angularapp.component.htmlapp.module.ts- <dx-text-box> <dx-validator> <dxi-validation-rule type="compare" message="My custom message"> </dxi-validation-rule> </dx-validator> </dx-text-box>- import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxValidatorModule, DxTextBoxModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ DxTextBoxModule, BrowserModule, DxValidatorModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }- VueApp.vue- <template> <DxTextBox> <DxValidator> <DxCompareRule message="My custom message" /> </DxValidator> </DxTextBox> </template> <script> import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import { DxTextBox } from 'devextreme-vue/text-box'; import { DxValidator, DxCompareRule } from 'devextreme-vue/validator'; export default { components: { DxTextBox, DxValidator, DxCompareRule } } </script>- ReactApp.js- import React from 'react'; import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import { TextBox } from 'devextreme-react/text-box'; import { Validator, CompareRule } from 'devextreme-react/validator'; class App extends React.Component { render() { return ( <TextBox> <Validator> <CompareRule message="My custom message" /> </Validator> </TextBox> ); } } export default App;
- Hide the message - jQueryindex.js- $(function() { $("#textBox").dxTextBox({ ... }) .dxValidator({ type: "compare", message: "" }); });- Angularapp.component.htmlapp.module.ts- <dx-text-box> <dx-validator> <dxi-validation-rule type="compare" message=""> </dxi-validation-rule> </dx-validator> </dx-text-box>- import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxValidatorModule, DxTextBoxModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxValidatorModule, DxTextBoxModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }- VueApp.vue- <template> <DxTextBox> <DxValidator> <DxCompareRule message="" /> </DxValidator> </DxTextBox> </template> <script> import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import { DxTextBox } from 'devextreme-vue/text-box'; import { DxValidator, DxCompareRule } from 'devextreme-vue/validator'; export default { components: { DxTextBox, DxValidator, DxCompareRule } } </script>- ReactApp.js- import React from 'react'; import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import { TextBox } from 'devextreme-react/text-box'; import { Validator, CompareRule } from 'devextreme-react/validator'; class App extends React.Component { render() { return ( <TextBox> <Validator> <CompareRule message="" /> </Validator> </TextBox> ); } } export default App;
- Display the editor's name in the message - jQueryindex.js- $(function() { $("#textBox").dxTextBox({ ... }) .dxValidator({ name: "Passwords", // The error message will be "Passwords do not match" validationRules: [{ type: "compare" }] }); });- Angularapp.component.htmlapp.module.ts- <dx-text-box> <!-- The error message will be "Passwords do not match" --> <dx-validator name="Passwords"> <dxi-validation-rule type="compare"> </dxi-validation-rule> </dx-validator> </dx-text-box>- import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxValidatorModule, DxTextBoxModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxValidatorModule, DxTextBoxModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }- VueApp.vue- <template> <DxTextBox> <!-- The error message will be "Passwords do not match" --> <DxValidator name="Passwords"> <DxCompareRule /> </DxValidator> </DxTextBox> </template> <script> import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import { DxTextBox } from 'devextreme-vue/text-box'; import { DxValidator, DxCompareRule } from 'devextreme-vue/validator'; export default { components: { DxValidator, DxCompareRule } } </script>- ReactApp.js- import React from 'react'; import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import { TextBox } from 'devextreme-react/text-box'; import { Validator, CompareRule } from 'devextreme-react/validator'; class App extends React.Component { render() { return ( <TextBox> {/* The error message will be "Passwords do not match" */} <Validator name="Passwords"> <CompareRule} /> </Validator> </TextBox> ); } } export default App;
type
Specifies the rule type. Set it to "compare" to use the CompareRule.
If you have technical questions, please create a support ticket in the DevExpress Support Center.