Supprimer l'hôte de l'élément HTML sélecteurs créé par angulaire de la composante
Angulaire 2, svg-rect est un composant qui crée rect comme ci-dessous,
<svg height="550" width="450" x="0" y="0">
<g id="svgGroup">
<svg-rect>
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
</svg-rect>
<svg-rect>
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
</svg-rect>
</g>
</svg>
mais cela ne rend pas rect en raison de l'élément dans les balises créées. Si svg-rect balises sont supprimées il rend le rect
<svg height="550" width="450" x="0" y="0">
<g id="svgGroup">
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
</g>
</svg>
Angulaire 1.x, il y a remplacer: 'true' qui supprime la directive balises avec la sortie compilée. Pouvons-nous mettre la même dans angular2?
Vous devez vous connecter pour publier un commentaire.
Au lieu d'essayer de se débarrasser de l'élément hôte, le transformer en celui qui est valable le SVG, mais d'autres sages unaffecting: au Lieu de votre sélecteur d'élément
et son élément correspondant dans le modèle:
passer à un sélecteur d'attributs:
et d'ajouter un attribut à un élément de groupe tag:
Cela permettra d'élargir à:
qui est valable SVG, ce qui rendra.
Plnkr
Une autre approche pour supprimer l'hôte de l'appareil que j'utilise.
Directive
remove-host
À l'aide de la présente directive;
<avatar [name]="hero.name" remove-host></avatar>
Dans
remove-host
la directive, tous les enfants de lanativeElement
sont insérés avant l'hôte et l'hôte de l'élément est supprimé.Exemple D'Échantillon Gist
Basée sur l'utilisation de cas, il pourrait y avoir quelques problèmes de performances.
ChangeDetection
est déclenché commeshadow DOM !== actual DOM
. Mais si il n'y a pas beaucoup d'éléments, puis ce ne serait pas si grand que ça. Espérons 😉replace:true
stackoverflow.com/questions/22497706/... quelqu'un a dit que cette fonction est vraiment dans angular2 mais officieusement pris en charge.ngFor
qui est en train de changer les données, vous obtiendrez surpris de voir comment l'INTERFACE utilisateur ne mettra pas à jour correctement.Il y a une autre approche que l'on peut obtenir le modèle d'un composant du composant.
Tout d'abord, nous avons créer le composant, dont la balise, nous l'espérons, pour supprimer à partir du navigateur de rendu (nous ne cherchons pas à supprimer le tag ici.)
Puis, dans une autre composante du modèle, nous écrire:
Ensuite, nous avons dans le navigateur quelque chose comme ceci:
Donc, nous avons apporté
<p>{{value}}</p>
de la TlNoTagComponent.<tl-no-tag></tl-no-tag>
continuera à être là, mais ne bloque pas le css et svg-chose.*ngFor
autour de ces données. Mon scénario était de groupe<td>
ensemble. Ce code fonctionne parfaitement. Assurez-vous de définirdisplay: none
sur letl-no-tag
de sorte qu'il n'interfère pas avec votrecolspan
.Pour citer le Angulaire de 1 à Angulaires 2 Stratégie de Mise à niveau doc:
Que penser de quelque chose comme:
De le mettre dans le composant hôte du css (ou scss) fichier sera la cause de la composante de la zone de ne pas la rendre.
N. B: Il a travaillé pour moi-mais évidemment, je serais inquiet au sujet de la compatibilité du navigateur, surtout si vous êtes en développement à soutenir les anciens navigateurs. Je suis aussi assez sûr que c'est pas le tout de la "expérimentale" de phase. Les documents également état que cela peut entraîner des problèmes d'accessibilité.