angular2-formly is an Angular 2 module which has a Components to help customize and render JavaScript/JSON configured forms.
The formly-form
Component and the FormlyConfig
service are very powerful and bring unmatched maintainability to your
application's forms.
npm install ng-formly --save
import {NgModule} from '@angular/core';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {BrowserModule} from '@angular/platform-browser';
import {FormlyModule, FormlyBootstrapModule} from 'ng-formly';
import {AppComponent} from './app';
@NgModule({
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
FormlyModule.forRoot(),
FormlyBootstrapModule,
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {
}
import {Component} from '@angular/core';
import {Validators, FormGroup} from '@angular/forms';
import {FormlyFieldConfig} from 'ng-formly';
@Component({
selector: 'app',
template: `
<form class="formly" role="form" novalidate [formGroup]="form" (ngSubmit)="submit(user)">
<formly-form [model]="user" [fields]="userFields">
<button type="submit" class="btn btn-default">Button</button>
</formly-form>
</form>
`,
})
export class HelloApp {
form: FormGroup = new FormGroup({});
userFields: FormlyFieldConfig = [{
className: 'row',
fieldGroup: [{
className: 'col-xs-6',
key: 'email',
type: 'input',
templateOptions: {
type: 'email',
label: 'Email address',
placeholder: 'Enter email'
},
validators: {
validation: Validators.compose([Validators.required])
}
}, {
className: 'col-xs-6',
key: 'password',
type: 'input',
templateOptions: {
type: 'password',
label: 'Password',
placeholder: 'Password',
pattern: ''
},
validators: {
validation: Validators.compose([Validators.required])
}
}]
}];
user = {
email: 'email@gmail.com',
checked: false
};
submit(user) {
console.log(user);
}
}
From there, it's just JavaScript. Allowing for DRY, maintainable, reusable forms.
See the issues labeled enhancement
A special thanks to Kent C. Dodds for giving me opportunity to work on this. This library is maintained (with love) by me, Mohammed Zama Khan. Thanks to all contributors! If you're trying to find angular-formly, go here
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!