Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

Β 

History

480 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ng-forge Dynamic Forms

Stop writing repetitive form code.
Build type-safe, dynamic Angular forms in minutes, not hours.

CI npm version npm downloads License: MIT GitHub stars Discord

πŸ“š Documentation β€’ πŸš€ Getting Started β€’ πŸ” Migrating from ngx-formly β€’ πŸ’¬ Discord β€’ πŸ› Issues

Coming from ngx-formly? ng-forge is built on Angular Signal Forms β€” see the side-by-side migration guide for a concept-by-concept mapping with full working code on both sides.


⚑ Quick Start

npm install @ng-forge/dynamic-forms @ng-forge/dynamic-forms-material
// app.config.ts
import { provideDynamicForm } from '@ng-forge/dynamic-forms';
import { withMaterialFields } from '@ng-forge/dynamic-forms-material';

export const appConfig: ApplicationConfig = {
  providers: [provideDynamicForm(...withMaterialFields())],
};
// component.ts
import { DynamicForm, type FormConfig, type InferFormValue } from '@ng-forge/dynamic-forms';

@Component({
  imports: [DynamicForm],
  template: `<form [dynamic-form]="config" (submitted)="onSubmit($event)"></form>`,
})
export class LoginComponent {
  config = {
    fields: [
      { key: 'email', type: 'input', value: '', label: 'Email', required: true, email: true },
      { key: 'password', type: 'input', value: '', label: 'Password', required: true, minLength: 8, props: { type: 'password' } },
      { type: 'submit', key: 'submit', label: 'Sign In' },
    ],
  } as const satisfies FormConfig;

  onSubmit(value: InferFormValue<typeof this.config.fields>) {
    console.log('Form submitted:', value); // inferred: { email: string; password: string }
  }
}

✨ Features

⚑ Signal Forms – Native Angular Signal Forms integration

🎯 Type-Safe – Full TypeScript inference for form values

🎨 UI Agnostic – Material, Bootstrap, PrimeNG, Ionic, or custom

βœ… Validation – Shorthand validators and conditional validation

🎭 Conditional Logic – Dynamic field visibility and requirements

πŸ“„ Multi-Step Forms – Built-in wizard and pagination support

🌍 i18n Ready – Observable/Signal support for labels and messages

Compatibility

Angular @ng-forge/dynamic-forms
22.x 1.x
21.x 0.x (experimental)

Signal Forms are stable as of Angular 22. The 0.x line targets Angular 21, where Signal Forms were still experimental and could change in patch releases. Each release pins its Angular requirement via peerDependencies; npm warns on a mismatch.

πŸ“¦ Packages

Package Description
@ng-forge/dynamic-forms Core library
@ng-forge/dynamic-forms-material Material Design
@ng-forge/dynamic-forms-primeng PrimeNG
@ng-forge/dynamic-forms-ionic Ionic
@ng-forge/dynamic-forms-bootstrap Bootstrap 5
@ng-forge/dynamic-form-mcp MCP server for AI-assisted form generation
@ng-forge/openapi-generator Generate forms from OpenAPI specs

πŸ“– Documentation

πŸ› οΈ Development

git clone https://github.com/ng-forge/ng-forge.git && cd ng-forge
pnpm install
pnpm run build:libs
pnpm run test
pnpm run serve:docs

See Developer Guides for architecture docs, testing strategy, and creating UI adapters.

πŸ™Œ Contributors

Special thanks to the people who shaped this framework.

dereekb 0xfraso

🀝 Backers

A huge thank you to the following supporters of ng-forge! πŸ™

scottmccaughey

πŸ“„ License

MIT Β© ng-forge


⭐ Star us on GitHub β€’ Join our Discord β€’ Report an Issue

About

Type-safe dynamic forms library for Angular 21 signal forms

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

100 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages