2017-02-08 4 views
1

J'ai un élément button dans mon élément de la liste *ngFor:Angular2 self.parentView.context est pas une fonction

<li class="cart__item" *ngFor="let item of cartService.cart$ | async"> 
    <button class="button button--decr" (click)="decrItem()">-</button> 
    <form action="#"> 
     <input type="text" id="qnt" maxlength="3" readonly="readonly" value="{item.qnt || 0}}"> 
    </form> 
    <button class="button button--incr" (click)="incrItem()">+</button>     
</li> 

Dans mon service, j'ai créé une méthode public (juste pour des fins de test)

incrItem() { 
    alert("Test!") 
} 

en cliquant sur mon button et d'appeler la fonction incrItem() provoque l'erreur:

Error in ./AppComponent class AppComponent - inline template:63:13 caused by: self.parentView.context.incrItem is not a function 

Je ne peux pas comprendre la cause depuis que j'ai importé mon composant CartService (où j'ai créé la méthode publique) dans AppComponent (où est rendu mon button).

Et ma méthode est publique, donc je peux l'utiliser dans toute l'application. N'a pas trouvé de solution de travail pour moi dans des questions similaires.

Répondre

2

Il vous suffit de déplacer la méthode incrItem du service vers la classe de composant. Vous devez utiliser les propriétés et les méthodes des composants comme contexte pour votre modèle