no-template-driven-forms
Interdire les formulaires pilotés par modèle, sauf les liaisons
ngModelsur les éléments explicitement autorisés.
Cette règle restreint les formulaires pilotés par modèle dans les modèles Angular. ngForm et ngModelGroup sont toujours rejetés, car ils portent un état de formulaire modifiable dans le modèle. ngModel est également rejeté, sauf sur un élément explicitement autorisé pour une liaison de vue Ionic inadaptée à Signal Forms.
Un élément autorisé est une exception d’interopérabilité, pas une recommandation d’utiliser les formulaires pilotés par modèle. Les formulaires de soumission doivent utiliser Signal Forms même lorsqu’ils contiennent un élément autorisé.
Détails de la règle
La règle s’exécute sur les modèles Angular et vérifie trois motifs :
-
ngModelsur un élément absent deallowedElements
SignalengModel,[(ngModel)]et[ngModel]sur les éléments dont le nom de balise ne figure pas dans la liste autorisée. Une sortie(ngModelChange)isolée n’est pas inspectée. -
Attribut
ngModelGroup
Signale tout attributngModelGroupsur tout élément. -
Référence ou directive
ngForm
Signale<form #form="ngForm">et<div ngForm>.
La règle n’utilise pas les informations de types ; elle travaille uniquement sur l’AST du modèle analysé.
Exemples
Incorrect
<!-- ngModel sur un champ ordinaire -->
<input [(ngModel)]="name" />
<!-- Référence ngForm -->
<form #form="ngForm"></form>
<!-- Directive ngModelGroup -->
<div ngModelGroup="address"></div>
Correct
<!-- Liaison de champ Signal Forms -->
<input [formField]="userForm.name" />
<!-- ngModel autorisé sur ion-searchbar pour une liaison de vue -->
<ion-searchbar [(ngModel)]="query"></ion-searchbar>
Options
{
"rules": {
"@rdlabo/rules/no-template-driven-forms": [
"error",
{
"allowedElements": ["ion-searchbar", "ion-segment", "ion-radio-group", "ion-select", "ion-range", "ion-toggle", "ion-checkbox", "ion-input-otp"]
}
]
}
}
allowedElements
- Type :
string[] - Valeur par défaut :
[]
Noms des balises d’éléments autorisés à utiliser ngModel. Cette option est destinée aux composants Ionic qui exposent une valeur via ngModel par commodité de vue, comme ion-searchbar ou ion-toggle. Même lorsqu’un élément est autorisé, ngModelGroup et ngForm restent signalés.
Quand l’activer
Activez cette règle lorsqu’un projet migre vers Angular Signal Forms mais nécessite encore des liaisons ngModel limitées pour certains composants de vue Ionic. Ne la désactivez que si un projet s’engage pleinement dans Reactive Forms et ne prévoit pas d’adopter Signal Forms.