2017-09-24 7 views
1

J'ai rencontré un problème avec la directive ngModel. J'ai un input<td><input type="text" ([ngModel])="desc"></td> dans lequel j'ai affecté la valeur de ce input à la variable appelée desc. Puis, dans component Je veux juste imprimer dans la console par:ngModel ne fonctionne pas correctement dans Angular 4

addItem(){ 
    console.log('=======', this.desc); 
    } 

La méthode addItem() est decalred dans le fichier html en dessous du input:

<td> 
      <i 
       class="fa fa-plus-square add-button" 
       (click)="addItem()"> 
      </i> 
    </td> 

La chose que je nous obtenons est: ======= undefined en la console. Quelqu'un peut-il me dire pourquoi j'ai eu ça? Dans la place différente de cette application, j'utilise également ngModel et tout fonctionne bien

Répondre

2

La syntaxe des opérateurs de liaison de données (et [est faux, si vous voulez que la double liaison fonctionne correctement, vous devez vous rappeler la célèbre phrase « Banana dans une boîte » de sorte que vous devez écrire [(ngModel)], il est comme une banane dans une boîte [()].

pour plus d'informations, [est pour une vue de contrôleur de liaison et (pour l'inverse.

+0

Ok, donc j'ai changé un peu et maintenant il ressemble à: '' et créé juste un nouvel objet dans 'component' appelé 'newItem'. Y a-t-il un moyen de omettre le problème avec 'Can not read property 'description' de undefined' en raison du champ' description' dans 'newItem' qui n'a jamais été créé? – bielas

+0

Bien sûr, mais vous devrez créer une classe contenant toutes les propriétés de newItem. Disons que votre classe s'appelle Item, donc dans votre controller, il vous suffit d'instancier un objet de cette classe: 'newItem: Item = new Item();' –