0
votes

Valeur de mise à jour dans un tableau d'objet chaque fois qu'un bouton est cliqué.

J'ai un bouton et une gamme d'objets,

generateRandomNumber() {
   return Math.floor(Math.random() * 10);
}
appendDataToLink() {
  this.test.forEach( e => {
     e.link = `${e.link}/rd-${this.generateRandomNumber()}`
  });
  console.log(this.test);
}


9 commentaires

Votre exemple de code fonctionne simplement bien. Peut-être que vous cliquez deux fois sur le bouton deux fois


Chaque fois que je clique, je dois ajouter le nouvel identifiant


Votre code fonctionne bien


Non, à chaque fois, vous cliquez sur seulement le nombre récent doit être annexé. Il devrait remplacer l'ancienne valeur.


Et exactement cela se passe ... sur chaque clic, vous ajoutez A / RD-X à votre URI


Mais je veux un moyen de remplacer l'ancien avec le courant actuel.


Oh, vous voulez donc que la dernière partie du lien change, ne pas ajouter de nouveau, chaque fois que vous cliquez sur. Vous pouvez simplement enregistrer le lien d'origine et l'utiliser pour générer le nouveau lien Est-ce ce que tu veux?


Eh bien, OK alors, vous n'avez pas mentionné de remplacer, il suffit d'ajouter


Si vous lisez la question complètement, vous pouvez comprendre le problème.


5 Réponses :


0
votes

La solution la plus simple consiste à maintenir un booléen xxx

puis modifier la fonction d'append comme xxx


2 commentaires

Je ne peux pas coder un nouveau projet manuellement. Si vous pouvez ajouter de manière programmable un accessoire c'est bien.


@ anonyme vérifier à nouveau s'il vous plaît



0
votes

Prenez la sous-chaîne du lien au lieu du lien xxx


2 commentaires

Ce n'est pas une solution, c'est un "hack"


peut également utiliser une fonction SPLIT ('/ RD') et prendre une première partie et ajouter un nombre aléatoire



0
votes

Vérifiez ce code.

Vérifiez d'abord la météo Toute chaîne ('RD-') présente ou non, si elle est là, remplacez-la ou si elle ne l'ajoute pas simplement. P>

this.test.forEach( e => {
      if (/rd-[0-9]/.test(e.link)) {
        e.link = (e.link).replace(/rd-[0-9]/, `rd-${this.generateRandomNumber()}`);
      }
      else {
        e.link = `${e.link}/rd-${this.generateRandomNumber()}`
      }
    });


0 commentaires

2
votes

Comme je suis lié dans mon commentaire, c'est un moyen simple de le faire https://stackblitz.com/edit/angular- 5BQ8EZ? Fichier = src / app / app.component.ts Vous enregistrez le lien d'origine et utilisez-le pour générer des liens futurs

modifier: comme indiqué dans les commentaires (explication de la solution ajoutée)

Modification du AppenddatatOtOlink Fonction suivante: xxx

Ceci utilise le lien fourni comme base pour générer de nouveaux liens et ne nécessite pas de modifier l'objet d'origine


2 commentaires

Belle solution propre. Ne nécessite pas que le tableau d'origine soit modifié


Vous devez expliquer votre solution dans le texte de réponse tout en fournissant le lien comme référence. Cela aidera les futurs lecteurs et garder votre réponse valable si le lien devient obsolète.



1
votes

Je vois ce que vous essayez de faire. Chaque fois que vous cliquez sur le bouton, il appendra le nombre aléatoire '/ rd- (randnum)' sur la chaîne existante. Donc, si vous commencez par '/ abc / def / ghi' et cliquez sur le bouton, il ajoutera sur la chaîne. Par exemple: xxx

etc.

Si vous souhaitez remplacer le numéro à la fin de la liaison avec un numéro différent, vous devez d'abord supprimer le dernier numéro à l'aide de Substrage avant d'ajouter le nouveau numéro. Vous pouvez également ajouter un nouveau champ à savoir si le lien a déjà été modifié ou si c'est la première fois que le bouton a été cliqué, vous ne perdez donc pas la partie '/ ghi' partie: xxx < / Pré>

J'espère que cela aide!