0
votes

Comment puis-je re-rendu NGUR lorsque les données ne changent pas?

Aperçu:

J'ai une liste qui lie deux tableaux avec un NGFOR en utilisant des tuyaux. Je lie les matrices sur un type type.

Un tableau répertorie tous les types disponibles et l'autre détient les types sélectionnés avec une option supplémentaire. NOTE Les tableaux ne partagent que 2 propriétés, nom et identifiant

problème:

Parce que mon NGFOR est liée au premier tableau lorsque les données changent dans la deuxième matrice, rien n'est mis à jour, alors à la minute, je dois rappeler ma méthode HTTP qui saisit les mêmes données pour mettre à jour la liste.

J'ai besoin d'un moyen de forcer la répercussentation sans appeler mon API à chaque fois que quelque chose dans le second tableau change

Stackblitz:

https://stackblitz.com/edit/angular-nxkwaf


2 commentaires

Pouvez-vous me dire ce qui ne va pas ici? Stackblitz.com/edit/angular-hpr2e6?file=== src / app / ... j'ai commenté this.getPrimary () appels


Si vous cochez la case «Ischecked» d'abord, il doit uniquement sélectionner les cases à cocher et ajouter à la matrice. Une fois que cela a été ajouté à la matrice, alors "ischecked" peut être vérifié / décoché plusieurs fois toutes les fonctionnalités fonctionne comme il vous devrai avoir besoin d'un meilleur moyen de renoncer à la liste.


4 Réponses :


1
votes

Vous pouvez utiliser NGIF et A SETTIMETTOUTOOUT pour rendre la NGFOR RE Rendu. Appelez this.reload () au lieu de this.getPrimary () xxx

enveloppe ngfor intérieure ngif xxx

plumker : https://stackblitz.com/edit/angular-GeUsx


3 commentaires

Cela ressemble un peu comme un piratage, probablement une meilleure performance que mon hack actuel mais je ne voudrais pas une solution réelle s'il y en a un, merci bien que


Essayez de cacher et d'afficher un composant angulaire AG-Grid-angulaire avec un * ngif = "Afficher" pour supprimer l'instance précédente de AG-Grid en utilisant Settimeout comme ce this.show = false; Settimeout (() => this.show = true)


C'est à peu près la même réponse que vous avez donnée ci-dessus. Le problème avec cela est que je n'ai pas besoin d'afficher / masquer la liste autre que de forcer / pirater cela pour fonctionner. Utilisation d'une version modifiée de la solution d'Onik, je peux définir l'objet qui est réellement utilisé pour mettre à jour le modèle qui est un moyen plus agréable de le faire à mon avis.



0
votes

Vous pouvez importer le modifiéTectorRef à partir du noyau angulaire et de la gâchette markforcheck . Ce n'est probablement pas la manière optimale, mais il devrait reformuler le composant dans votre cas


1 commentaires

Pourriez-vous m'aider avec un exemple de cela? J'ai brièvement examiné ChangetectorRef et sentez que vous pourriez être ici, mais je ne sais pas comment je voudrais le mettre en œuvre, merci



0
votes

Vous pouvez définir une nouvelle référence sur ce tableau et il sera répercuter,

this.secondary = [...this.secondary];


2 commentaires

Pourriez-vous élaborer plus sur ce que vous voulez dire, peut-être éditer la Stackblitz?


Un tuyau résonnera si l'un de ses paramètres change, de sorte que la réaffectation secondaire sera retenue le tuyau isinarray comme secondaire est un paramètre du tuyau.



1
votes

Utilisation d'une version ajustée de la solution d'Onik, j'ai réussi à résoudre ceci avec moins de lignes de code

xxx

Stackblitz

https://stackblitz.com/edit/angular-rryDDR


0 commentaires