@rxweb/reactive-forms v1.0.0
For More Information on rxweb
Prerequisites
This only works in TypeScript Language Supported Project.
Table of Contents
Installation
$ npm install @rxweb/reactive-forms
Global Configuration
Before applying the validation on the model, you have set few one thing globally. Write the below code at starting point of the application.
// For VUE Projects
ReactiveFormConfig.clientLib = ClientLibrary.Vue;
// For React Projects
ReactiveFormConfig.clientLib = ClientLibrary.React;
Form Validation
Pure model driven decorator based validation.
- alpha
- alphaNumeric
- ascii
- compare
- contains
- creditCard
- dataUri
- different
- digit
- endsWith
- even
- extension
- factor
- greaterThanEqualTo
- greaterThan
- hexColor
- json
- latitude
- latLong
- leapYear
- lessThanEqualTo
- lessThan
- longitude
- lowerCase
- mac
- maxDate
- maxLength
- maxNumber
- minDate
- minLength
- minNumber
- numeric
- odd
- password
- pattern
- port
- primeNumber
- range
- required
- startsWith
- upperCase
- url
alpha
Alpha validation will allow only alphabets to be entered. It will not allow any digit or special character.
Model
@alpha() countryName: string;
Component
<input id="name" class="form-control" v-model="countryFormGroup.props.countryName" type="text" name="name" /> <small class="form-text text-danger">{{countryFormGroup.controls.countryName.errorMessage}}<br/></small>
@Component export default class CountryComponent extends Vue { countryFormGroup: IFormGroup<Country>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.countryFormGroup = this.formBuilder.formGroup(Country) as IFormGroup; } }
___
## alphaNumeric
Alpha Numeric validation will allow only alphabets and numbers to be entered, It will not allow any special character.
> Model
```js
@alphaNumeric()
areaName: string;
Component
<input id="name" class="form-control" v-model="countryFormGroup.props.areaName" type="text" name="name" /> <small class="form-text text-danger">{{countryFormGroup.controls.areaName.errorMessage}}<br/></small>
@Component export default class CountryComponent extends Vue { countryFormGroup: IFormGroup<Country>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.countryFormGroup = this.formBuilder.formGroup(Country) as IFormGroup; } }
___
## ascii
ascii validation decorator allows user to enter the input which is in the proper ascii format.
> Model
```js
@ascii()
specialCharAsciiCode: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.specialCharAsciiCode" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.specialCharAsciiCode.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## compare
Compare validation will compare two inputs whether they are same or not.
> Reactive Form Validation
> Model
```js
@prop()
password: string;
@compare({fieldName:'password' })
confirmPassword: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.password" type="text" name="name" />
<small class="form-text text-danger">{{userFormGroup.controls.password.errorMessage}}<br/></small>
<input id="name" class="form-control" v-model="userFormGroup.props.confirmPassword" type="text" name="name" />
<small class="form-text text-danger">{{userFormGroup.controls.confirmPassword.errorMessage}}<br/></small>
```js
@Component
export default class UserComponent extends Vue {
userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() {
super();
this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup<User>;
}
}
contains
Contains validation will check that value is in the input, It will not allow to enter input that not contains the predefined value.
Model
@contains({value:'@gmail.com' }) emailAddress: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.emailAddress" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.emailAddress.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## creditCard
creditCard validation will check property value is creditcardtype or not, It will not allow to enter any value other than credit card format.
> Model
```js
@prop()
cardType: string;
@creditCard({fieldName:'cardType' })
creditCardNumber: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.creditCardNumber" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.creditCardNumber.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## dataUri
dataUri validation allows user to enter the input which is a valid data Uri.
> Model
```js
@dataUri
videoDataUri: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.emailAddress" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.emailAddress.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
___
## different
different validation decorator will check two inputs whether they are different or not. It is just opposite of different decorator.
> Model
```js
@prop()
firstName: string;
@different({fieldName:'firstName' })
lastName: string;
Component
<input id="name" class="form-control" v-model="accountInfoFormGroup.props.lastName" type="text" name="name" /> <small class="form-text text-muted">Both field must be different<br/></small> <small class="form-text text-danger">{{accountInfoFormGroup.controls.lastName.errorMessage}}<br/></small>
@Component export default class DifferentAddComponent extends Vue { accountInfoFormGroup: IFormGroup<AccountInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.accountInfoFormGroup = this.formBuilder.formGroup(AccountInfo) as IFormGroup; } }
___
## digit
Digit validation will allow only digits to be entered, It will not allow any alphabets or special character.
> Model
```js
@digit()
age: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.age" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.age.errorMessage}}<br/></small>
@Component export default class DigitAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
___
## email
email validation decorator will only allow user to enter input which is in the correct email format.
> Model
```js
@email()
email: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.email" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.email.errorMessage}}<br/></small>
@Component export default class EmailAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## endsWith
endsWith validation allows user to enter the input which ends with particular value.
> Model
```js
@endsWith({value:'t' })
name: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.name" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.name.errorMessage}}<br/></small>
@Component export default class EndsWithAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## even
even validation decorator will check whether the value entered by user is an even number or not.
> Model
```js
@even()
evenNumber: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.evenNumber" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.evenNumber.errorMessage}}<br/></small>
@Component export default class EvenAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## extension
extension validation allows user to enter the input which is in the proper extension format.
> Model
```js
@extension({extensions:['jpg','bmp'] })
profilePicture: string;
Component
<input id="name" class="form-control" v-model="userInfoFormGroup.props.profilePicture" type="text" name="name" /> <small class="form-text text-danger">{{userInfoFormGroup.controls.profilePicture.errorMessage}}<br/></small>
@Component export default class ExtensionAddComponent extends Vue { userInfoFormGroup: IFormGroup<UserInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userInfoFormGroup = this.formBuilder.formGroup(UserInfo) as IFormGroup; } }
## extension
extension validation allows user to enter the input which is in the proper extension format.
> Model
```js
@extension({extensions:['jpg','bmp'] })
profilePicture: string;
Component
<input id="name" class="form-control" v-model="userInfoFormGroup.props.profilePicture" type="text" name="name" /> <small class="form-text text-danger">{{userInfoFormGroup.controls.profilePicture.errorMessage}}<br/></small>
@Component export default class ExtensionAddComponent extends Vue { userInfoFormGroup: IFormGroup<UserInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userInfoFormGroup = this.formBuilder.formGroup(UserInfo) as IFormGroup; } }
## factor
factor validation will allow user to enter factor of a number which is called dividend.
> Model
```js
@factor({dividend:50 })
firstNumber: Number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.firstNumber" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.firstNumber.errorMessage}}<br/></small>
@Component export default class FactorAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## greaterThanEqualTo
Greater than equal to validation decorator will check that input property is greater than or equal to the related field input.
> Model
```js
@greaterThanEqualTo({fieldName:'age' })
voterAge: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.voterAge" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.voterAge.errorMessage}}<br/></small>
@Component export default class GreaterThanEqualToAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## greaterThan
Greater than validation decorator will check that input property is greater than to the related field input.
> Model
```js
@greaterThan({fieldName:'age' })
voterAge: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.voterAge" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.voterAge.errorMessage}}<br/></small>
@Component export default class GreaterThanAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## hexColor
hexColor validation decorator will allow user to enter only the input in proper Hex Color format.
> Model
```js
@hexColor()
color: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.color" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.color.errorMessage}}<br/></small>
@Component export default class HexColorAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## json
json validation will allow user to enter the input only in proper Json format.
> Model
```js
@json()
locationJson: string;
Component
<input id="name" class="form-control" v-model="jsonInfoFormGroup.props.locationJson" type="text" name="name" /> <small class="form-text text-danger">{{jsonInfoFormGroup.controls.locationJson.errorMessage}}<br/></small>
@Component export default class JsonAddComponent extends Vue { jsonInfoFormGroup: IFormGroup<JsonInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.jsonInfoFormGroup = this.formBuilder.formGroup(JsonInfo) as IFormGroup; } }
## latitude
latitude validation allows user to enter value which is valid latitude.
> Model
```js
@latitude()
firstCountryLatitude: string;
Component
<input id="name" class="form-control" v-model="numberInfoFormGroup.props.firstCountryLatitude" type="text" name="name" /> <small class="form-text text-danger">{{numberInfoFormGroup.controls.firstCountryLatitude.errorMessage}}<br/> </small>
@Component export default class LatitudeAddComponent extends Vue { numberInfoFormGroup: IFormGroup<NumberInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.numberInfoFormGroup = this.formBuilder.formGroup(NumberInfo) as IFormGroup; } }
## LeapYear
leapyear validation will check whether the value entered is a leap year or not.
> Model
```js
@leapYear()
birthYear: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.birthYear" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.birthYear.errorMessage}}<br/></small>
@Component export default class LeapYearAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## latLong
latLong validation decorator allows user to enter the input which is valid Latitude or longitude.
> Model
```js
@latLong()
firstCountry: string;
Component
<input id="name" class="form-control" v-model="countryFormGroup.props.firstCountry" type="text" name="name" /> <small class="form-text text-danger">{{countryFormGroup.controls.firstCountry.errorMessage}}<br/></small>
@Component export default class LatLongAddComponent extends Vue { countryFormGroup: IFormGroup<Country>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.countryFormGroup = this.formBuilder.formGroup(Country) as IFormGroup; } }
## lessThanEqualTo
Less than equal to validation will allow the user to enter only that value which is less than oe equal to the value in the pre defined field.
> Model
```js
@lessThanEqualTo({fieldName:'totalMarks' })
marks: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.marks" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.marks.errorMessage}}<br/></small>
@Component export default class LessThanEqualToAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## lessThan
less than validation decorator will allow the user to enter only that value which is less than the value in the pre defined field.
> Model
```js
@lessThan({fieldName:'marks' })
passingMarks: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.passingMarks" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.passingMarks.errorMessage}}<br/></small>
@Component export default class LessThanAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## longitude
longitude validation allows user to enter the input which is in the proper longitude format.
> Model
```js
@longitude()
firstCountryLongitude: string;
Component
<input id="name" class="form-control" v-model="numberInfoFormGroup.props.firstCountryLongitude" type="text" name="name" /> <small class="form-text text-danger">{{numberInfoFormGroup.controls.firstCountryLongitude.errorMessage}}<br/></small>
@Component export default class LongitudeAddComponent extends Vue { numberInfoFormGroup: IFormGroup<NumberInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.numberInfoFormGroup = this.formBuilder.formGroup(NumberInfo) as IFormGroup; } }
## lowercase
lowerCase validation will allow user to enter only the lowercase alphabets.
> Model
```js
@lowerCase()
username: string;
Component
<input id="name" class="form-control" v-model="userInfoFormGroup.props.username" type="text" name="name" /> <small class="form-text text-danger">{{userInfoFormGroup.controls.username.errorMessage}}<br/></small>
@Component export default class LowerCaseAddComponent extends Vue { userInfoFormGroup: IFormGroup<UserInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userInfoFormGroup = this.formBuilder.formGroup(UserInfo) as IFormGroup; } }
## mac
mac validation decorator will check whether the value entered is a valid mac address.
> Model
```js
@mac()
systemMacAddress: string;
Component
<input id="name" class="form-control" v-model="macAddressInfoFormGroup.props.systemMacAddress" type="text" name="name" /> <small class="form-text text-danger">{{macAddressInfoFormGroup.controls.systemMacAddress.errorMessage}}<br/></small>
@Component export default class MacAddComponent extends Vue { macAddressInfoFormGroup: IFormGroup<MacAddressInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.macAddressInfoFormGroup = this.formBuilder.formGroup(MacAddressInfo) as IFormGroup; } }
## maxDate
maxDate validation decorator will allow user to enter the date less than the maxDate value parameter.
> Model
```js
@maxDate({value:'07/30/2018' })
registrationDate: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.registrationDate" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.registrationDate.errorMessage}}<br/></small>
@Component export default class MaxDateAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## maxLength
MaxLength validation will allow user to enter the input upto the maximum length value parameter.
> Model
```js
@maxLength({value:10 })
firstName: string;
Component
<input id="name" class="form-control" v-model="locationFormGroup.props.firstName" type="text" name="name" /> <small class="form-text text-danger">{{locationFormGroup.controls.firstName.errorMessage}}<br/></small>
@Component export default class MaxLengthAddComponent extends Vue { locationFormGroup: IFormGroup<Location>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.locationFormGroup = this.formBuilder.formGroup(Location) as IFormGroup; } }
## maxLength
MaxLength validation will allow user to enter the input upto the maximum length value parameter.
> Model
```js
@maxLength({value:10 })
firstName: string;
Component
<input id="name" class="form-control" v-model="locationFormGroup.props.firstName" type="text" name="name" /> <small class="form-text text-danger">{{locationFormGroup.controls.firstName.errorMessage}}<br/></small>
@Component export default class MaxLengthAddComponent extends Vue { locationFormGroup: IFormGroup<Location>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.locationFormGroup = this.formBuilder.formGroup(Location) as IFormGroup; } }
## maxNumber
MaxNumber validation will allow user to enter the input upto the maximum number value parameter.
> Model
```js
@maxNumber({value:50 })
passingMarks: number;
Component
<input id="name" class="form-control" v-model="subjectDetailsFormGroup.props.passingMarks" type="text" name="name" /> <small class="form-text text-danger">{{subjectDetailsFormGroup.controls.passingMarks.errorMessage}}<br/></small>
@Component export default class MaxNumberAddComponent extends Vue { subjectDetailsFormGroup: IFormGroup<SubjectDetails>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.subjectDetailsFormGroup = this.formBuilder.formGroup(SubjectDetails) as IFormGroup; } }
## minDate
Minimum Date validation will allow user to enter date greater the minimum date value parameter.
> Model
```js
@minDate({value:'07/30/2018' })
registrationDate: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.registrationDate" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.registrationDate.errorMessage}}<br/></small>
@Component export default class MinDateAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## minLength
minLength validation decorator will allow user to enter the input length matching the minimum length value parameter.
> Model
```js
@minLength({value:3 })
countryName: string;
Component
<input id="name" class="form-control" v-model="contactFormGroup.props.countryName" type="text" name="name" /> <small class="form-text text-danger">{{contactFormGroup.controls.countryName.errorMessage}}<br/></small>
@Component export default class MinLengthAddComponent extends Vue { contactFormGroup: IFormGroup<Contact>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.contactFormGroup = this.formBuilder.formGroup(Contact) as IFormGroup; } }
## minNumber
minNumber validation decorator will allow user to enter the input greater than the minimum number value parameter.
> Model
```js
@minNumber({value:35 })
maths: number;
Component
<input id="name" class="form-control" v-model="resultInfoFormGroup.props.maths" type="text" name="name" /> <small class="form-text text-danger">{{resultInfoFormGroup.controls.maths.errorMessage}}<br/></small>
@Component export default class MinNumberAddComponent extends Vue { resultInfoFormGroup: IFormGroup<ResultInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.resultInfoFormGroup = this.formBuilder.formGroup(ResultInfo) as IFormGroup; } }
## numeric
numeric validation will check whether the value entered is a valid numberic value or not.The validation can be set according to requirement, it can be either decimal,negative number or positive number.
> Model
```js
@numeric({acceptValue:NumericValueType.PositiveNumber ,allowDecimal:false })
integerNumber: number;
Component
<input id="name" class="form-control" v-model="userInfoFormGroup.props.integerNumber" type="text" name="name" /> <small class="form-text text-danger">{{userInfoFormGroup.controls.integerNumber.errorMessage}}<br/></small>
@Component export default class NumericAddComponent extends Vue { userInfoFormGroup: IFormGroup<UserInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userInfoFormGroup = this.formBuilder.formGroup(UserInfo) as IFormGroup; } }
## odd
Odd validation will check whether the value entered is an odd number or not.
> Model
```js
@odd()
oddNumber: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.oddNumber" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.oddNumber.errorMessage}}<br/></small>
@Component export default class OddAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## pattern
pattern validation decorator will allow user to enter the input which match the predefined pattern value parameter.
> Model
```js
@pattern({expression:{'onlyAlpha': /^[A-Za-z]+$/} })
userName: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.userName" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.userName.errorMessage}}<br/></small>
@Component export default class PatternAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## password
password validation decorator will allow user to enter only the input according to correct password validation format.
> Model
```js
@password({validation:{maxLength: 10,minLength: 5,digit: true,specialCharacter: true} })
password: string;
Component
<input id="name" class="form-control" v-model="loginInfoFormGroup.props.password" type="text" name="name" /> <small class="form-text text-danger">{{loginInfoFormGroup.controls.password.errorMessage}}<br/></small>
@Component export default class PasswordAddComponent extends Vue { loginInfoFormGroup: IFormGroup<LoginInfo>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.loginInfoFormGroup = this.formBuilder.formGroup(LoginInfo) as IFormGroup; } }
## port
port validation decorator allows user to enter the input which is a valid port number.
> Model
```js
@port()
educationalWebsitePort: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.educationalWebsitePort" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.educationalWebsitePort.errorMessage}}<br/></small>
@Component export default class PortAddComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() { super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## primeNumber
primeNumber validation allows user to enter only prime number.
> Model
```js
@primeNumber
firstNumber: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.firstNumber" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.firstNumber.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
## range
> Model
```js
@range(minimumNumber:18, maximumNumber:60)
age: number;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.age" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.age.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## required
Required validation will check that the user has entered the value in the property or not.
> Model
```js
@required()
countryName: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.countryName" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.countryName.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
____
## startsWith
startsWith validation allows user to enter the input which starts with particular value.
> Model
```js
@startsWith('n')
countryName: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.countryName" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.countryName.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
____
## upperCase
UpperCase validation will allow user to enter the alphabets only in the upperCase format.
> Model
```js
@upperCase()
countryName: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.countryName" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.countryName.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## url
Url validation will check that value entered in the property is in the correct url format or not.
> Model
```js
@url()
adminWebsiteUrl: string;
Component
<input id="name" class="form-control" v-model="userFormGroup.props.adminWebsiteUrl" type="text" name="name" /> <small class="form-text text-danger">{{userFormGroup.controls.adminWebsiteUrl.errorMessage}}<br/></small>
@Component export default class UserComponent extends Vue { userFormGroup: IFormGroup<User>;
formBuilder: RxFormBuilder = new RxFormBuilder();
constructor() super(); this.userFormGroup = this.formBuilder.formGroup(User) as IFormGroup; } }
___
## Contributing
If you are thinking to make rxweb framework better, that's truly great. You can contribute from a single character to core architectural work or significant documentation all with the goal of making a robust rxweb framework which helps for everyone in their projects. Even if you are dont feel up to writing code or documentation yet, there are a variety of other ways that you can contribute like reporting issues to testing patches.
Check out the <a href="https://rxweb.io/community/where_to_start_contributing">docs</a> on how you can put your precious efforts on the rxweb framework and contribute in the respective area.
## Need Help
We highly recommend for help please ask your questions on our <a href="https://gitter.im/rxweb-project/rxweb?source=orgpage">gitter/rxweb-project</a> to get quick response from us. Otherthan our gitter channel you can ask your question on <a
href="https://stackoverflow.com/search?q=rxweb">StackOverflow</a> or <a href="https://github.com/rxweb/rxweb/issues/new/choose">create a new issue</a> in our Github Repository.
For, issue please refer our issue workflow wiki for better visibility our issue process.
## Feature Request
You can request a new feature by submitting an issue to our <a href="https://github.com/rxweb/rxweb">GitHub Repository</a>. If you would like to implement a new feature, please submit an issue with a proposal for your work first, to be sure that we can use it.
# License
MIT