
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
@ng-forge/dynamic-forms
Advanced tools
Type-safe, signal-powered dynamic forms for Angular. Build complex forms from configuration with full TypeScript inference.
Core library for building type-safe, dynamic Angular forms with signal forms integration.
Stability: This library is built on Angular Signal Forms, which is stable as of Angular v22. Check the compatibility matrix below for supported Angular versions.
| 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.
| Entrypoint | Audience | Stability |
|---|---|---|
@ng-forge/dynamic-forms | Form consumers | Public API, governed by semver |
@ng-forge/dynamic-forms/schema | Form consumers | Public API, governed by semver |
@ng-forge/dynamic-forms/integration | UI adapter authors | Public API, governed by semver |
@ng-forge/dynamic-forms/testing | Component authors | Public API, governed by semver |
@ng-forge/dynamic-forms/internal | None (build-time) | Unsupported, no semver guarantee |
The /schema entrypoint is a supported, semver-governed surface for using Standard Schema validation libraries (Zod, Valibot, ArkType) with dynamic forms via standardSchema().
The /testing entrypoint provides test fixtures (createNgForgeFieldFixture, createNgForgeActionFixture, provideTestValidationMessages) for unit testing custom field and action components. The same symbols are still re-exported from /integration for backwards compatibility, but those aliases are deprecated and will be removed in the next major.
The /internal entrypoint is an unsupported build surface with no semver guarantee. It is published only because shared DI tokens, services, and config types must keep a single compiled identity across the public bundles. Its contents may change or be removed in any release, including patch releases.
Import only from @ng-forge/dynamic-forms and @ng-forge/dynamic-forms/schema (form consumers), @ng-forge/dynamic-forms/integration (UI adapter authors), or @ng-forge/dynamic-forms/testing (component tests).
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 UserFormComponent {
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); // TypeScript infers: { email: string, password: string }
}
}
InferFormValuerequired, email, minLength) and custom validatorsThis core library requires a UI integration. Choose one:
| Package | UI Library |
|---|---|
| @ng-forge/dynamic-forms-material | Angular Material |
| @ng-forge/dynamic-forms-bootstrap | Bootstrap 5 |
| @ng-forge/dynamic-forms-primeng | PrimeNG |
| @ng-forge/dynamic-forms-ionic | Ionic |
Or create your own.
See GitHub Releases.
Contributions are welcome! Please read our Contributing Guide.
MIT © ng-forge
FAQs
Type-safe, signal-powered dynamic forms for Angular. Build complex forms from configuration with full TypeScript inference.
The npm package @ng-forge/dynamic-forms receives a total of 203 weekly downloads. As such, @ng-forge/dynamic-forms popularity was classified as not popular.
We found that @ng-forge/dynamic-forms demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.