typescript - angular.element-alternativ fra Angular 2 og fremover
Jeg har en Angular 1-applikasjon hvor jeg brukte:
let css = ".toolbar-background {background-color: #D3300E !important;}";
angular.element(document.body).append(angular.element('<div><style>' + css + '</style></div>'));
Jeg migrerer applikasjonen min til Angular 2, og nå er ikke angular-objektet tilgjengelig fra og med Angular 2.
Det vil være veldig nyttig hvis noen kan foreslå en mulig måte å oppnå det samme i Angular 2.
Svar #1
Det finnes et par måter å gjøre dette på:
BRUKSDOKUMENT
importer Document i komponenten din slik:
import {DOCUMENT} from '@angular/platform-browser';
injiser det i konstruktøren slik:
constructor(@Inject(DOCUMENT) private document: any) {
}
og bruk det til å legge til dataene slik inne i en hvilken som helst funksjon:
ngOnInit() {
let css = ".toolbar-background {background-color: #D3300E !important;}";
this.document.body.innerHTML.append = this.document.body.innerHTML + "<div><style>" + css + "</style></div>";
}
her er den fungerende plunkeren:
https://embed.plnkr.co/lVRcHNJnxgGsD1iwZJll/
BRUKE ElementRef
Importer ElementRef og ViewChild i komponenten slik:
import {ViewChild, ElementRef } from '@angular/core';
I HTML-en din definerer du div-en der du vil legge til data slik:
<div #styleDiv></div>
Få tilgang til overliggende div ved å bruke ViewChild slik:
@ViewChild('styleDiv') styleDiv:ElementRef;
og utfør den nødvendige vedleggsoperasjonen på denne måten:
let css = "h2 {color: green;font-size:14px;}";
let tmp = "<style>" + css + "</style>";
this.styleDiv.nativeElement.insertAdjacentHTML('beforeend',tmp);
her er den fungerende plunker som bruker ViewChild og ElementRef: https://embed.plnkr.co/lVRcHNJnxgGsD1iwZJll/
Svar #2
du kan bruke ElementRef og legge til CSS.
constructor(myElement: ElementRef) { ... }
