In Angular 1 tutte le manipolazioni del DOM devono essere eseguite in direttive per garantire un'adeguata testabilità, ma per quanto riguarda Angular 2? Come è cambiato?Dove si trova la manipolazione DOM in Angular 2?
Sono stato alla ricerca di buoni articoli o di qualsiasi informazione su dove mettere la manipolazione DOM e su come pensare quando lo si fa, ma io vengo vuoto ogni volta.
Prendete questa componente, ad esempio (questo è davvero una direttiva, ma facciamo finta che non è):
export class MyComponent {
constructor(private _elementRef: ElementRef) {
this.setHeight();
window.addEventListener('resize', (e) => {
this.setHeight();
});
}
setHeight() {
this._elementRef.nativeElement.style.height = this.getHeight() + 'px';
}
getHeight() {
return window.innerHeight;
}
}
Vuol vincolante evento appartengono in un costruttore per esempio, o questo dovrebbe essere messo in funzione ngAfterViewInit
o altrove? Dovresti provare a scomporre la manipolazione del DOM di un componente in una direttiva?
Al momento è tutto solo un offuscamento quindi non sono sicuro di averlo fatto correttamente e sono sicuro di non essere l'unico.
Quali sono le regole per la manipolazione DOM in Angular2?
Puoi elaborare? – Chrillewoodz
'@HostListener (...)' registra un listener di eventi e '@HostBinding (...)' aggiorna il valore di stile 'height' sul valore assegnato a' number'. Il gestore dell'evento non era corretto. Ho aggiornato la mia risposta (mi dispiace, era solo al telefono quando l'ho scritto). –
La manipolazione diretta DOM non è compatibile con il rendering lato server e utilizza il supporto di Angers of WebWorkers. –