https://github.com/biophoton/angular-alternative-validation
Provides an alternative validation state without effecting the valid state of a control
https://github.com/biophoton/angular-alternative-validation
Last synced: 3 months ago
JSON representation
Provides an alternative validation state without effecting the valid state of a control
- Host: GitHub
- URL: https://github.com/biophoton/angular-alternative-validation
- Owner: BioPhoton
- License: mit
- Created: 2017-07-18T23:08:38.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-07-25T12:45:27.000Z (almost 8 years ago)
- Last Synced: 2025-03-15T14:35:31.942Z (over 1 year ago)
- Language: TypeScript
- Size: 4.9 MB
- Stars: 25
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# angular-alternative-validation
#### Angular Alternative Validation - The smoothest way to implement validation hints/warnings for your forms

[](https://www.npmjs.com/package/angular-alternative-validation)
[](https://travis-ci.org/BioPhoton/angular-alternative-validation)
[](https://coveralls.io/github/BioPhoton/angular-alternative-validation?branch=master)
## Demo
- [x] [angular4 demo with ng-cli](https://github.com/BioPhoton/angular-alternative-validation/tree/master/examples/angular4)
- [x] [plunkr demo](https://embed.plnkr.co/e3GOAFENPumfy78IWXAw/)

## Quick code example:
``` typescript
// app.component.ts
...
import { IAlternativeValidationConfig } from 'angular-alternative-validation/struct/alternative-validation-config';
@Component({
selector: 'app-basic-usage',
template: `
{{fg.get('name').valid}} vs {{aV.valid}}`
})
export class BasicUsageComponent {
...
}
```
## Basic Usage:
#### Implement Library
``` bash
$ npm install angular-alternative-validation --save
```
``` typescript
// app.module.ts
...
// IMPORT YOUR LIBRARY
import { AlternativeValidationModule } from 'angular-alternative-validation';
@NgModule({
imports: [
...
AlternativeValidationModule.forRoot();
]
...
})
export class AppModule { }
```
#### Create alternative validation config object
``` typescript
// app.component.ts
...
import { IAlternativeValidationConfig } from 'angular-alternative-validation/struct/alternative-validation-config';
@Component({
selector: 'app-basic-usage',
template: `
Value: {{formGroup.get('name').value}} , Valid: {{formGroup.get('name').valid}}
`
})
export class BasicUsageComponent {
aVConfig: IAlternativeValidationConfig = {
validator: [
{name: 'required'},
{name: 'minLength', params: [3] }
]
}
formGroup: FormGroup;
constructor(private fb: FormBuilder) {
this.basicFormGroup = this.fb.group({ name: [] });
}
}
```
#### Template reference to the directive
``` html
// app.component.html
...
{{aV.errors | json}} {{aV.valid}}
```
#### A Reference to the directive in the class
``` typescript
// app.component.ts
...
@ViewChild(AlternativeValidationDirective)
alternativeValidationRef
...
ngAfterViewInit() {
console.log('Directive referenc: ', this.alternativeValidationRef);
}
...
```
## Use custom validations
#### Create custom function
``` typescript
// app.module.ts
export function myValidation(param1, param2): ValidatorFn {
}
...
@NgModule({
...
providers: [
{ provide: NG_VALIDATORS, useValue: myValidation, multi: true }
]
...
})
export class AppModule {
}
```
#### Use custom transform function in config object
``` typescript
// app.component.ts
...
export class BasicUsageComponent {
fPConfig: IAlternativeValidationConfig = {
alternativeValidation:[
{ name: 'myValidation', params: [param1, param2] }
]
}
}
```
# What it is
There are many ways to build a alternative validation state.
Many of them can't reuse existing validators and all of them do not provide a separate state of validation.
What this library do is it provides an alternative state of the host control.
You can use it like the normal form control validation
but it is not effecting the actual validation of the form.
It's a mix of `FormControlName`, `AbstractControlDirective`, `ControlValueAccessor`, `NG_VALIDATORS` and a little bit of `magic-glue$`.
In this way you can:
- reuse default validators and async validators
- treat the alternative control stated independent from the real one that effects formGroup and formControl states
- display user hints/information separated from the error messages
- use other libraries working with formControl logic
# License
MIT © [Michael Hladky](mailto:michael@hladky.at)
Copyright 2017 [Michael Hladky](mailto:michael@hladky.at). All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at [angular-alternative-validation](https://github.com/BioPhoton/angular-alternative-validation/blob/master/LICENSE.txt)