Angulaire 2 - innerHTML style
Je reçois des morceaux de codes HTML de HTTP appels. J'ai mis le code HTML de blocs dans une variable et de l'insérer sur ma page avec[innerHTML] mais je ne peux pas le style de la insérés bloc HTML. Quelqu'un a une suggestion comment je pourrais faire?
@Component({selector: 'calendar',
template: '<div [innerHTML]="calendar"></div>',
providers:[HomeService],
styles: [`
h3 {color:red;}
`})
Le code HTML que je veux le style est le bloc contenu dans la variable "calendrier".
- Le Style d'où? À partir de l'intérieur de la composante ou de styles ajoutée à
index.html
? - qu'entendez-vous par
can not style the inserted HTML block
? Nous montrer ce qu'ont fait pour elle avec un petit extrait de code. - Ive mis à jour mon post avec un fragment de code! 🙂 merci
- J'ai ajouté un Plunker lien de ma réponse
- que faire si le code HTML de codes css ? comment peut-elle être rendue ?
- Ce code HTML? Angulaire de modèles de composants? Je pense que des liens de CSS et
<style>
balises sont tout simplement supprimés. - J'ai trouvé ce Angulaire 2 documentation. Explique toutes sortes de ':host' et '/profondeur/' sélecteurs.
Vous devez vous connecter pour publier un commentaire.
mise à jour 2
::slotted
::slotted
est désormais pris en charge par tous les nouveaux navigateurs et peut être utilisé avec `ViewEncapsulation.ShadowDomhttps://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
mise à jour 1 ::ng-deep
/deep/
était obsolète et remplacé par::ng-deep
.::ng-deep
est également déjà marquée obsolète, mais qu'aucun remplacement n'est encore disponible.Quand
ViewEncapsulation.Native
est correctement pris en charge par tous les navigateurs et prend en charge le style à travers l'ombre DOM limites,::ng-deep
seront probablement abandonnées.original
Angulaire ajoute toutes sortes de classes CSS pour le HTML, il ajoute les DOM pour émuler le shadow DOM CSS encapsulation pour prévenir les styles de saignement et de composants. Angulaire également réécrit le CSS que vous ajoutez à correspondre à ces classes. Pour HTML ajoutés à l'aide de
[innerHTML]
ces classes ne sont pas ajoutés et le réécrit CSS ne correspondent pas.Comme une solution de contournement essayer
index.html
>>>
(et l'équivalent/deep/
mais/deep/
fonctionne mieux avec SASS) et::shadow
ont été ajoutées dans la version 2.0.0-bêta.10. Ils sont semblables à l'ombre DOM CSS combinators (qui sont obsolètes) et fonctionnent uniquement avecencapsulation: ViewEncapsulation.Emulated
qui est la valeur par défaut dans Angular2. Ils ont probablement aussi travailler avecViewEncapsulation.None
mais ne sont alors ignorés parce qu'ils ne sont pas nécessaires.Ces combinators ne sont qu'une solution intermédiaire, jusqu'à ce que des fonctionnalités plus avancées pour la croix-composant style est pris en charge.
Une autre approche consiste à utiliser
pour tous les composants qui bloquent votre CSS (dépend de l'endroit où vous ajoutez le CSS et où le HTML, c'est que vous voulez le style pourrait être tous composants de votre application)
Mise à jour
Exemple Plunker
styleUrls: [...]
pour le composant, il doit travailler avec les styles externes ainsi.styles
etstyleUrls
différemment.angular-cli
etSASS
ouSCSS
pour votre style. Vous devez utiliser régulièrementCSS
pour que cela fonctionne./deep/
au lieu de>>>
el.nativeElement.style.backgroundColor = 'yellow';
, comme le montre l'exemple de la documentation ici.inneeHTML
Si vous êtes en essayant de style ajouté dynamiquement des éléments HTML à l'intérieur d'un Angulaires composant, cela pourrait être utile:
Ma conjecture est que la convention pour cet attribut n'est pas garanti pour être stable entre les versions de Anguleuses, de sorte que l'on peut rencontrer des problèmes avec cette solution lors de la mise à niveau vers une nouvelle version Angulaire (bien que, la mise à jour de cette solution serait susceptible d'être trivial dans ce cas).