
Simplifier, structurer et maintenir vos formulaires Angular
Code:

Réduire la duplication, améliorer la lisibilité et faciliter la maintenance des formulaires complexes.
Création originale sous angular-formly 1.0.0 en 2014
Reprise et adaptation pour Angular moderne
Maintenu par la communauté avec plusieurs dizaines de milliers de téléchargements hebdomadaires sur npm
Configuration décrivant la structure des champs, leurs validations, conditions d’affichage et interactions.
FormlyInterprète la configuration pour créer automatiquement les composants de formulaire Angular.
Liaison automatique entre les champs du formulaire et le modèle de données, avec validation intégrée.
fields: FormlyFieldConfig[] = [
{
key: 'firstName',
type: 'input',
props: {
label: 'Prénom',
required: true,
minLength: 2,
},
validation: {
messages: {
required: 'Le prénom est obligatoire',
minlength: 'Le prénom doit contenir au moins 2 caractères',
},
},
},
];
➡️ Ce bloc suffit à générer un champ réactif complet, avec validation, label, et messages d’erreur automatiques.
fields: FormlyFieldConfig[] = [
{
key: 'isCompany',
type: 'checkbox',
props: {
label: 'Est-ce une société ?',
},
},
{
key: 'companyName',
type: 'input',
props: {
label: 'Nom de la société',
required: true,
},
hide: '!model.isCompany',
},
];
➡️ Le champ Nom de la société n’apparaît que si la case Est-ce une société ? est cochée. Formly gère automatiquement l’affichage conditionnel et les validations dynamiques.
this.form = this.fb.group({
isCompany: [false],
companyName: [''],
});
this.form.get('isCompany')?.valueChanges.subscribe((isCompany) => {
const companyNameControl = this.form.get('companyName');
if (isCompany) {
companyNameControl?.setValidators([Validators.required]);
} else {
companyNameControl?.clearValidators();
companyNameControl?.setValue('');
}
companyNameControl?.updateValueAndValidity();
});
➡️ Le champ Nom de la société n’apparaît que si la case Est-ce une société ? est cochée. Ici, l’affichage conditionnel et la validation sont gérés manuellement via les Reactive Forms d’Angular (avec un *ngIf et des Validators dynamiques).
Formly offre des outils puissants pour les cas d’usage les plus complexes. Voici quelques pistes à explorer pour concevoir des formulaires intelligents et modulaires :
Liez dynamiquement des propriétés comme disabled, label ou class à l’état du modèle. C’est le cœur de la réactivité dans Formly.
'props.disabled': '!model.text',
'props.placeholder': 'model.user'
Créez vos propres composants de champ (ex : un <app-color-picker>) et intégrez-les à Formly pour les réutiliser dans tous vos formulaires.
Factorisez le HTML commun (labels, grilles, tooltips, icônes) autour de vos champs pour un code 100% DRY (Don’t Repeat Yourself).
Implémentez des validateurs personnalisés, y compris asynchrones, pour vérifier des données côté serveur (ex : email unique).
💡 En combinant ces fonctionnalités, vos formulaires deviennent vraiment dynamiques, évolutifs et maintenables.
Formly simplifie la création de formulaires Angular : moins de code, maintenance simplifiée et réutilisation maximale. Voici un aperçu clair de ses points forts et des quelques limites à connaître.

