no-template-driven-forms
Verbietet templategesteuerte Formulare außer
ngModel-Bindungen an ausdrücklich erlaubten Elementen.
Diese Regel beschränkt templategesteuerte Formulare in Angular-Templates. ngForm und ngModelGroup werden immer zurückgewiesen, da sie veränderlichen Formularzustand im Template halten. Auch ngModel wird zurückgewiesen, sofern es nicht an einem ausdrücklich zugelassenen Element für eine Ionic-View-Bindung verwendet wird, die sich nicht für Signal Forms eignet.
Ein zugelassenes Element ist eine Interoperabilitätsausnahme, keine Empfehlung für templategesteuerte Formulare. Formulare mit Absenden sollten Signal Forms verwenden, auch wenn sie ein zugelassenes Element enthalten.
Einzelheiten der Regel
Die Regel läuft auf Angular-Templates und prüft drei Muster:
-
ngModelan einem Element außerhalb vonallowedElements
MeldetngModel,[(ngModel)]und[ngModel]an Elementen, deren Tagname nicht in der Positivliste steht. Ein eigenständiger Output(ngModelChange)wird nicht untersucht. -
Attribut
ngModelGroup
Meldet jedes AttributngModelGroupan jedem Element. -
Referenz oder Direktive
ngForm
Meldet<form #form="ngForm">und<div ngForm>.
Die Regel verwendet keine Typinformationen; sie arbeitet ausschließlich mit dem geparsten Template-AST.
Beispiele
Inkorrekt
<!-- ngModel an einem gewöhnlichen Eingabefeld -->
<input [(ngModel)]="name" />
<!-- ngForm-Referenz -->
<form #form="ngForm"></form>
<!-- ngModelGroup-Direktive -->
<div ngModelGroup="address"></div>
Korrekt
<!-- Signal-Forms-Feldbindung -->
<input [formField]="userForm.name" />
<!-- ngModel ist an ion-searchbar für eine View-Bindung erlaubt -->
<ion-searchbar [(ngModel)]="query"></ion-searchbar>
Optionen
{
"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
- Typ:
string[] - Standard:
[]
Element-Tagnamen, die ngModel verwenden dürfen. Dies ist für Ionic-Komponenten gedacht, die aus Komfortgründen einen View-Wert über ngModel bereitstellen, beispielsweise ion-searchbar oder ion-toggle. Auch bei einem zugelassenen Element werden ngModelGroup und ngForm weiterhin gemeldet.
Wann die Regel aktiviert werden sollte
Aktivieren Sie diese Regel, wenn Ihr Projekt auf Angular Signal Forms migriert, aber für bestimmte Ionic-View-Komponenten noch begrenzte ngModel-Bindungen benötigt. Deaktivieren Sie sie nur, wenn das Projekt vollständig auf Reactive Forms setzt und keine Einführung von Signal Forms plant.