web-dev-qa-db-fra.com

Aucun accesseur de valeur pour le contrôle de formulaire avec le nom: 'destinataire'

J'ai eu cette erreur après la mise à niveau vers Angular 2 Rc.5. Voici mon modèle de composant:

<md-input
    [(ngModel)]="recipient"
    name="recipient"
    placeholder="Name"
    class="col-sm-4"
    (blur)="addRecipient(recipient)">
</md-input>

Mon app.module.ts importe la FormsModule

J'ai également essayé de déclarer private recipient; dans mon composant.

Est-ce que je manque quelque chose? Pourquoi ai-je cette erreur?

No value accessor for form control with name: 'recipient'
60
TheUnreal

Vous devriez ajouter l'attribut ngDefaultControl à votre entrée comme ceci:

<md-input
    [(ngModel)]="recipient"
    name="recipient"
    placeholder="Name"
    class="col-sm-4"
    (blur)="addRecipient(recipient)"
    ngDefaultControl>
</md-input>

Tiré des commentaires dans ce post:

entrée personnalisée angular2 rc.5, aucun accesseur de valeur pour le contrôle de formulaire avec un nom non spécifié

Remarque: pour les versions ultérieures de @ angular/material:

De nos jours, vous devriez plutôt écrire:

<md-input-container>
    <input
        mdInput
        [(ngModel)]="recipient"
        name="recipient"
        placeholder="Name"
        (blur)="addRecipient(recipient)">
</md-input-container>

Voir https://material.angular.io/components/input/overview

117
Peter Salomonsen

Assurez-vous d'importer également MaterialModule, car vous utilisez md-input, qui n'appartient pas à FormsModule.

11
Ophir Bushinsky