ng-smart-forms
Version:
Zero-config reactive forms with built-in validation, auto-save, and smart error handling for Angular
91 lines (68 loc) • 2.37 kB
Markdown
Zero-config reactive forms with built-in validation, auto-save, and smart error handling for Angular.
- 🚀 **Zero Configuration**: Works out of the box
- 💾 **Auto-Save**: Automatically saves form data as user types
- ✅ **Smart Validation**: Built-in validators + custom validation support
- 🎨 **Visual Feedback**: Real-time error display and status indicators
- 🔧 **TypeScript**: Full TypeScript support with interfaces
- 📱 **Responsive**: Works on all devices
- 🎯 **Performance**: Optimized with debouncing and change detection
```bash
npm install ng-smart-forms
```
```typescript
// app.module.ts
import { SmartFormModule } from "ng-smart-forms";
@NgModule({
imports: [SmartFormModule],
// ...
})
export class AppModule {}
```
```typescript
// component.ts
import { Component } from "@angular/core";
import { FormBuilder, FormGroup, Validators } from "@angular/forms";
import { SmartValidators } from "ng-smart-forms";
@Component({
selector: "app-example",
template: `
<form [formGroup]="userForm" smartForm [config]="formConfig">
<input formControlName="email" smartInput [fieldConfig]="{ type: 'email', placeholder: 'Enter email' }" name="email" />
<input formControlName="password" smartInput [fieldConfig]="{ type: 'password', placeholder: 'Enter password' }" name="password" />
<button type="submit" [disabled]="!userForm.valid">Submit</button>
</form>
`,
})
export class ExampleComponent {
userForm: FormGroup;
formConfig = {
autoSave: true,
autoSaveDelay: 1000,
showErrorsOnTouch: true,
};
constructor(private fb: FormBuilder) {
this.userForm = this.fb.group({
email: ["", [Validators.required, Validators.email]],
password: ["", [Validators.required, SmartValidators.strongPassword()]],
});
}
}
```
- `smartForm`: FormGroup instance
- `config`: SmartFormConfig options
- `smartInput`: FormControl instance
- `fieldConfig`: SmartFieldConfig options
- `SmartValidators.strongPassword()`
- `SmartValidators.noSpaces()`
- `SmartValidators.phoneNumber()`
- `SmartValidators.creditCard()`
MIT