J'ai remarqué que lorsque j'ai un *ngIf qui évalue à false, il insère un commentaire HTML vide au lieu de l'élément Existe-t-il un moyen de l'empêcher de faire cela ?
e.g.
<!---->
J'ai remarqué que lorsque j'ai un *ngIf qui évalue à false, il insère un commentaire HTML vide au lieu de l'élément Existe-t-il un moyen de l'empêcher de faire cela ?
e.g.
<!---->
Comme il a déjà été mentionné dans le commentaire, cela fait partie du compilateur Angular.
*ngIf
est une directive structurelle qui peut être étendue à
<ng-template [ngIf]="someValue"></ng-template>
ng-template
est représenté par EmbeddedView
. Pour chaque compilateur angulaire EmbeddedView crée anchorDef
avec un élément comme :
element: {
ns: null,
name: null,
Ensuite, l'angle crée un nœud de commentaire pour les éléments avec null
nom
export function createElement(view: ViewData, renderHost: any, def: NodeDef): ElementData {
...
if (view.parent || !rootSelectorOrNode) {
if (elDef.name) {
el = renderer.createElement(elDef.name, elDef.ns);
} else {
el = renderer.createComment('');
}
En mode dev angulaire également stocke les fixations dans ce nœud :
function debugCheckAndUpdateNode(
view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, givenValues: any[]): void {
...
if (!elDef.element !.name) {
// a comment.
view.renderer.setValue(el, `bindings=${JSON.stringify(bindingValues, null, 2)}`);
}
afin que nous puissions voir dans notre DOM rendu quelque chose comme ceci :
<!--bindings={
"ng-reflect-ng-if": "true"
}-->
L'objectif principal de ce nœud de commentaire est de permettre à Angular de savoir où la vue intégrée sera placée dans le DOM.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.