Ici, j'ai une structure de données complexe dans une application Angular4.
Il s'agit d'un multigraphe dirigé paramétré avec des dictionnaires à la fois sur les nœuds et sur les liens. Mes composants angulaires travaillent sur ce modèle de données complexe.
Dans Angular2.4, tout fonctionnait bien. Depuis que nous sommes passés à Angular4, je reçois ceci dans mon DOM :
<g flareNode="" ng-reflect-model="{'id':'an-id-of-my-object'">
...qui est généré à partir de l'extrait de modèle suivant :
<svg:g flareNode [model]="item"></svg:g>
Note, model
est ici simplement un membre de données de mon composant. Il n'a pas (...ne devrait pas avoir) de signification spécifique à Angular2. Il fait partie de la structure de données complexe de mon application.
Ma première impression est qu'Angular sérialise le model
de la classe composant, récupère ses 30 premiers caractères, puis place ce truc totalement inutile dans le DOM !
Est-ce que j'ai raison ? Qu'est-ce que tout ça ng-reflect-model
dans le DOM, quel usage spécifique a-t-il dans Angular4 qu'il n'avait pas dans Angular2 ?
3 votes
Remarque : il s'agit no une question de débogage, j'ai donné ici bien trop peu d'informations pour cela. Le point central de la question, ce que le
ng-reflect-model
et peut-être que cela pourrait être la raison de ce comportement étrange (mettre les 30 premiers caractères d'un objet dans le DOM comme valeur d'un attribut). Toute réponse expliquant quel est le rôle de l'attributng-reflect-model
dans le cadre d'Angular est déjà acceptable.1 votes
Je ne peux pas voir
ng-reflect
attributs ajoutés à mes composants, mais ils ont été ajoutés dans la 2.4. Si vous créez un plunker avec DOM avec de tels attributs, j'y jetterai un coup d'oeil.0 votes
@Maximus Oui, dans mon cas, ng-reflect- est présent dans la 4.0, mais il ne l'était pas dans la 2. Créer un plunker ne serait pas pratique (c'est un gros code, fortement dépendant, en extraire une petite partie serait irréalisable). Quoi qu'il en soit, ce que je veux ici, ce n'est pas une aide au débogage, mais plutôt une meilleure compréhension, à quoi sert cette chose ng-reflect, et que je vois très bien, que les composants angulaires se comportent différemment sur les 30 premiers caractères de leurs variables de modèle sérialisées.
0 votes
Je ne vous demande pas de créer un plunker de votre application entière, juste une démo d'un composant dans laquelle
ng-reflect
est utilisé. IMHO, il n'y a personne sur stackoverflow qui peut répondre à cette question en ce moment. Je suis intéressant pour faire un peu de débogage et trouver la réponse, comme J'écris des articles de fond mais j'ai besoin d'une démo. J'ai passé une heure aujourd'hui à essayer de trouver un exemple, mais je n'ai pas réussi àng-reflect
à ajouter.0 votes
@Maximum Merci ! J'ai trouvé un post pertinent aquí . Il est dit que ng-reflect est uniquement pour le débogage et qu'il peut être désactivé par un paramètre de bootstrapModule. Le problème est que mon application ne fonctionne toujours pas et qu'elle ignore également le drapeau mentionné.
0 votes
J'ai trouvé la solution, vérifiez ma réponse.
1 votes
@Maximus Votre article est très profond et très dur. Il est peut-être plus valable que votre réponse (qui est également très valable).
0 votes
@peterch, merci pour vos bons mots ! Je vais même envisager de changer
I write in-depth articles
enI write _hardcore_ articles
:))). J'ai l'intention d'écrire beaucoup plus, alors suivez-moi pour en savoir plus. Bonne chance !