J'ai une application Angular 1 où j'ai utilisé:
let css = ".toolbar-background {background-color: #D3300E !important;}";
angular.element(document.body).append(angular.element('<div><style>' + css + '</style></div>'));
Je migre mon application vers Angular 2 et, maintenant, l'objet angular
n'est plus disponible à partir de Angular 2.
Ce sera vraiment utile si quelqu'un peut suggérer un moyen possible d'obtenir le même résultat en Angular 2.
Il y a deux façons de le faire:
USING DOCUMENT
importer le document dans votre composant comme ceci:
import {DOCUMENT} from '@angular/platform-browser';
l'injecter dans le constructeur comme ceci:
constructor(@Inject(DOCUMENT) private document: any) {
}
et utilisez-le pour ajouter les données comme ceci dans n'importe quelle fonction:
ngOnInit() {
let css = ".toolbar-background {background-color: #D3300E !important;}";
this.document.body.innerHTML.append = this.document.body.innerHTML + "<div><style>" + css + "</style></div>";
}
voici le plunker de travail:
https://embed.plnkr.co/lVRcHNJnxgGsD1iwZJll/
USING ElementRef
Importez ElementRef et ViewChild dans un composant comme ceci:
import {ViewChild, ElementRef } from '@angular/core';
Dans votre code html, définissez la div dans laquelle vous souhaitez ajouter des données comme:
<div #styleDiv></div>
Accédez au-dessus de div en utilisant ViewChild comme ceci:
@ViewChild('styleDiv') styleDiv:ElementRef;
et effectuez l'ajout requis comme ceci:
let css = "h2 {color: green;font-size:14px;}";
let tmp = "<style>" + css + "</style>";
this.styleDiv.nativeElement.insertAdjacentHTML('beforeend',tmp);
voici le logiciel de travail utilisant ViewChild et ElementRef: https://embed.plnkr.co/lVRcHNJnxgGsD1iwZJll/
vous pouvez utiliser ElementRef et ajouter css.
constructeur (myElement: ElementRef) {...}