Je cherche un moyen d'avoir un composant qui est rendu uniquement avec son contenu. Par exemple, vu le composant:
@Component({selector: 'my-cmp', template: '<div> my-cmp </div>'}) class MyComponent { }
En le rendant avec angular2 ajoutera le suivant au DOM:
<my-cmp> <div> my-cmp </div> </my-cmp>
Alors que je veux trouver un moyen de le rendre directement comme suit:
<div> my-cmp </div>
Malheureusement, puisque angular 2 est relativement nouveau (vient d'être bêta) – Google n'est pas si utile, sans parler de la manque de documentation actuelle.
Selon la documentation de 1.x angulaire
Remplacez l'élément de la directive lui-même (si le remplacement est vrai – DEPRECATED).
Je pense donc que cette fonctionnalité ne sera pas disponible. Angulaire 2
Un certain ordre peut être obtenu en utilisant un sélecteur d'attributs
CamelCasing est obligatoire pour les attributs depuis alpha.52
@Component({ selector: '[myCmp]', //attribute selector template: 'my-cmp' }) class MyComponent { }
Et utilisez ceci pour l'appeler:
<div myCmp></div>
Vous pouvez faire quelque chose comme suit:
@Component({selector: 'div.my-cmp', template: 'my-cmp'}) class MyComponent { }
Et dans votre HTML:
<div class="my-cmp" />
Je me souviens d'avoir posé une question similaire pour Angularjs il y a quelques années. Le consensus semble être alors, comme il se peut que ce soit maintenant, vous ne voulez probablement pas le faire.
Il brise la sémantique: un <video/>
ou un <input/>
ne se décompose pas dans son contenu. Vos composants angulaires ne devraient pas non plus.
Vous pouvez probablement encore atteindre ce que vous voulez en pensant plus profondément à votre balise / css? Peut-être que si vous mettez en pratique votre cas d'utilisation, nous pourrions vous donner une alternative?