2017-06-29 2 views
0

J'essaye dans * ngPour passer un objet à un autre composant, mais je n'ai passé que le dernier objet de la table, mais l'objet sur lequel je clique doit être affiché, comment résoudre ce problème problème?Affectation d'une valeur de variable d'un autre composant dans * ngFor par clic dans angulaire 2

<tr data-toggle="control-sidebar" *ngFor="let user of pagedItems"> 
     <td><control-sidebar [user]="user"> 
    </control-sidebar>{{ user.name }}</td> 

et dans une autre vue de composant montrant seulement la dernière rangée de table.

+0

pourquoi passez-vous 'userDetails' à la place de l'objet' user'? – Abrar

+0

Voir cet exemple. Il montre comment passer un objet cliqué de la boucle '* ngFor' à un autre composant. https://angular.io/generated/live-examples/toh-pt3/eplnkr.html – Nehal

Répondre

0

Lorsque vous liez les user données au control-sidebar:

[user]="userDtails", le problème se trouve ici.

Modifier le code:

<tr data-toggle="control-sidebar" *ngFor="let user of pagedItems"> 
     <td (click)="getUser(user)"><control-sidebar [user]="user"> 
    </control-sidebar>{{ user.name }}</td> 

Assurez-vous que vous avez défini la méthode getUser dans votre classe de composant.

Notez que j'ai défini: [user]="user". Si vous voulez passer l'objet user en control-sidebar.

Tout devrait bien fonctionner maintenant.

EDIT:

Puisque vous voulez afficher le user que vous avez cliqué sur pouvez lier une méthode pour le gestionnaire (click) et passer l'objet user. par exemple:

(click)="showUser(user)" 
+0

ohh excusez-moi, j'ai fait une erreur quand j'ai écrit post. Je l'ai corrigé. Dans mon code était la même liaison et j'ai obtenu le résultat décrit ci-dessus – llotall

+0

Vous voulez l'objet 'user' une fois que vous cliquez sur le' td', non? – Abrar

+0

peut-être ne fonctionne pas parce que j'utilise la table insted li comme dans votre exemple? – llotall