J'aimerais créer un lien plus solide entre un modèle Angular et un FormGroup. J'ai pensé à ce qui suit, mais je ne sais pas comment l'exprimer correctement en TypeScript.
Je veux utiliser un objet pour définir les clés de la controls
d'un Groupe de formulaires (le premier paramètre de la FormControl
constructeur), ainsi que la liaison de l formControlName
dans le modèle, en partant d'une classe modèle.
Mon raisonnement est que cela éliminera le "filandreux" ou le soi-disant corde magique découlant de l'utilisation de chaînes de caractères pour les formControlName
attribut. De cette façon, la source unique de vérité serait la classe modèle. Cela me permettrait également de remanier facilement cette classe et de mettre à jour toutes les autres références.
Par exemple, j'aurais aimé pouvoir écrire quelque chose comme ceci :
// model class:
class Partner {
id: string;
name: string;
}
// some static type SomeType = { id: "id", name: "name" } extends Partner's public properties
// but the values of those properties must equal the property name.
// component:
@Component({
template: `
<form [formGroup]="form" (ngSubmit)="onSubmit()" novalidate>
<!-- notice I'm not using a stringy API like formControlName="id" -->
<input type="text" [formControlName]="SomeType.id">
<input type="text" [formControlName]="SomeType.name">
</form>
`})
class CreatePartnerComponent {
form = new FormGroup({
SomeType.id: new FormControl(''),
SomeType.name: new FormControl('')
});
}
Merci !