Angular2 utilise [(ngModel)] avec [ngModelOptions] = "{standalone: true}" pour lier à une référence à la propriété du modèle
Disons que j'ai un tapuscrit objet de type Mailtype comme suit:
export class Mailtype {
constructor(
public name?: string,
public locale?: string,
public email?: string,
public properties? : Property[]
) { }
}
Où ses "propriétés" champ d'un tableau de type de Propriété:
export class Property {
constructor(
public name?: string,
public type?: string,
public example?: string,
public required?: boolean,
public masked?: boolean
) { }
}
Maintenant dans mon composant, j'ai un seul Mailtype objet et le html est un élément de formulaire utilisé pour l'édition et l'ajout de propriétés de la matrice de la Mailtype:
<form>
<tr *ngFor="let property of model.properties; let i=index">
<td>
<input type="text" [(ngModel)]="property.name" required>
</td>
</tr>
<button (click)="onAddProperty()">Add property</button>
</form>
composant:
export class MailtypeComponent {
model : Mailtype;
constructor() {
this.model = new Mailtype('','','',[]);
this.model.properties.push(new Property());
}
onAddProperty() {
this.model.properties.push(new Property());
}
}
Je me demandais si je ne suis pas autorisé à utiliser [(ngModel)] lien vers une référence de la "propriété" de l'élément du tableau dans le tableau, en particulier en même temps, je suis en itérant le tableau? Parce qu'il jette l'erreur suivante pour le code ci-dessus:
ORIGINAL EXCEPTION: If ngModel is used within a form tag, either the name attribute must be set
or the form control must be defined as 'standalone' in ngModelOptions.
Example 1: <input [(ngModel)]="person.firstName" name="first">
Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">
Il est donc suggérant j'utilise soit [ngModelOptions]="{standalone: true}"
ou ajouter un nom de domaine pour le html. Et il semble que [ngModelOptions]="{standalone: true}"
fonctionne dans ce cas. Pourquoi ne standalone: true
signifie, en fait, depuis que je ne trouve aucune documentation à ce sujet?
source d'informationauteur Calvin Hu | 2016-07-14
Vous devez vous connecter pour publier un commentaire.
À l'aide de
@angular/forms
lorsque vous utilisez un<form>
tag, il crée automatiquement unFormGroup
.Pour tous les contenus
ngModel
tagged<input>
il va créer unFormControl
et l'ajouter dans laFormGroup
créé ci-dessus; ceFormControl
sera nommé dans leFormGroup
à l'aide de l'attributname
.Exemple:
Dit, la réponse à votre question de la façon suivante.
Lorsque vous marquez comme
standalone: true
cela n'arrivera pas (il ne sera pas ajouté à laFormGroup
).Référence: https://github.com/angular/angular/issues/9230#issuecomment-228116474
Rappelez-vous que tous les composants ou les gère dans le formulaire doit être nom, également des contrôleurs externes, comme le premier ng, ngBootstrap.
ExamplePrimeNg