0
votes

Comment utiliser plusieurs composants angulaires dans une boucle

Je crée un panneau de notification POP où je montrerai toutes les livraisons de commande d'achat non classées. Je ne sais pas comment j'utiliserais * ngfor pour la boucler.

J'ai un système dans lequel un utilisateur peut aller et jouer à la livraison de la commande d'articles. Chaque commande a sa page de notation où ils évaluent la commande. Ceci est fait à l'aide d'un composant personnalisé (composant d'évaluation étoile).

Question est-ce que cela fonctionne bien lorsque vous l'utilisez sur une page, mais maintenant, je dois également rappeler aux utilisateurs via le panneau de notification qu'il existe des commandes non classées, ex "Veuillez les évaluer immédiatement." Ceci est fait à l'aide d'un composant de notation répété.

Maintenant, lorsque je bouconne toutes les commandes non classées, il apparaît comme prévu, mais lorsque j'avève une commande, toutes les autres commandes changent également de notations. Comment puis-je surmonter cela? xxx

PS: suivant est le composant

aussi, les évaluations que je passe sur le composant, c'est que les données de la boucle de notation, généralement 5 notes seront transmises en tant qu'objet. Cela déchira alors 5 commence dans le composant. xxx

 Entrez la description de l'image ici

Comme vous pouvez le voir Toutes les astuces insérant une carte unique, etc., mais pas de chance!


6 commentaires

Vous utilisez angular pas angularjs


Mon mauvais, mais ce n'est pas le point.


Si possible, fournissez Stackblitz


J'ai peur de ne pas pouvoir le reproduire en le simplifiant. Y a-t-il autre chose que je peux vous aider?


@Kirk n'a pas besoin de code réel juste exemple de code testable


@PrashantPimpale J'ai mis à jour le code.


5 Réponses :


1
votes

idk si vous devez vraiment utiliser votre composant, sinon, il y a un module de NG-Bootstrap pour une note de démarrage qui est vraiment simple à utiliser ICI et vous pourriez stocker vos tarifs facilement dans un tableau


1 commentaires

Bienvenue sur Stackoverflow, BTW Son bon à savoir, le composant est cool mais je n'ai pas le temps de réécrire à nouveau tout le système et de le tester. Y a-t-il une solution de contournement pour mon code de merde ici?



1
votes

[notes] = "Évaluations", ne devrait-il pas être [notes] = "Tâche.ratings". Comme il est dans une boucle, je suppose que vous devez attribuer la valeur de la notation à l'élément itérateur actuel. Probablement pourquoi toutes les valeurs changent lorsque vous en changez un.


2 commentaires

Désolé pour le code déroutant, mais c'est un tableau envoyant au composant pour la boucle des 5 débuts. À l'intérieur du composant, je suis itération de la matrice pour rendre 5 démarrages. C'est pourquoi c'est pourquoi les notes.


Vous auriez toujours besoin d'une référence de "Tâche" dans "Undatedorders" pour mettre à jour les évaluations de cette tâche. Essayez de lier la note à la tâche.



1
votes

Cela pourrait être question avec votre composant actuel d'étoiles. Peut-être que lors de l'ajout d'une notation, ils peuvent ne pas avoir de différenciation de type ID. Le code aiderait pour une analyse exacte.

Votre code doit être comme ci-dessous P>

unratedOrders - [{
orderId:1234
ratings:[{},{}]
}]


<div class="star-rating-size">
    <star-rating #starRating id="{{task.orderId}}-rating-component" (ratingChange)="changeRating($event,task)" [controlIndex]="i" [ratings]="task.ratings" [(rating)]="supplierRating.ratingId"></star-rating>
</div>

changeRating(event, selectedTask) {
    loop through unratedOrders and assing value to selected task
}


0 commentaires

1
votes

Maintenant, je ne vois pas comment vous mettez à jour votre valeur de notation, mais je vois vous lier à la même note dans chaque élément, puisque vous Utilisez la directive personnalisée, je ne peux pas deviner le travail interne. Mais ça me méfie pour moi.


2 commentaires

Désolé pour le code déroutant, mais c'est un tableau envoyant au composant pour la boucle des 5 débuts. À l'intérieur du composant, je suis itération de la matrice pour rendre 5 démarrages. C'est pourquoi c'est pourquoi les notes.


Voir la réponse d'Abhay Naveen. J'ai la même pensée



1
votes

Cela pourrait être question avec votre composant actuel d'étoiles. Peut-être que lors de l'ajout d'une notation, ils peuvent ne pas avoir de différenciation de type ID. Le code aiderait pour une analyse exacte.

Votre code doit être comme ci-dessous P>

unratedOrders - [{
orderId:1234
ratings:[{},{}]
}]


<div class="star-rating-size">
    <star-rating [ratings]="task.ratings" (ratingChange)="changeRating($event,task)"  id="{{task.orderId}}-rating-component"  [controlIndex]="i"  [(rating)]="supplierRating.ratingId"></star-rating>
</div>

changeRating(event, selectedTask) {
    loop through unratedOrders and assing value to selected task
}


0 commentaires