Stack Overflow en español Asked by Mateo Morales on January 5, 2022
En el archivo index.html tengo lo siguiente
<body #body>
<app-root></app-root>
</body>
y en otro componente quiero tomar el body y asignarle una clase al body
@ViewChild("body") body: ElementRef
constructor(private render: Renderer2 ) {}
ngOnInit(): void {
this.render.addClass(this.body.nativeElement,"login-body")
}
pero tengo el siguiente error core.js:4196 ERROR TypeError: Cannot read property ‘nativeElement’ of undefined
Una solución sería utilizar document.body
directamente para asignar la clase, es decir:
index.html
<body>
<app-root></app-root>
</body>
Componente
export class MyAwesomeComponent implements OnInit, OnDestroy {
constructor(
private renderer: Renderer2
) { }
ngOnInit() {
this.renderer.addClass(document.body, 'awesome-class');
}
ngOnDestroy() {
this.renderer.removeClass(document.body, 'awesome-class');
}
}
En este caso, hacerlo dentro de ngOnInit
es válido ya que el body está renderizado.
Answered by RRGT19 on January 5, 2022
En si, tienes dos errores, el viewchild
buscara los elementos hijo del componente, obviamente el body es muy superior, te recomiendo usar algo mas nativo de javascript, lo otro es que deberias implementar esto en el AfterViewInit
que es cuando un elemento esta renderizado
class MyComponent implements AfterViewInit {
ngAfterViewInit() {
// ...
}
}
Answered by Samir Llorente on January 5, 2022
2 Asked on October 11, 2020 by yasser-chacon
0 Asked on October 11, 2020 by jhon-dember-murillo-mendez
2 Asked on October 10, 2020 by juanchi-benitez
0 Asked on October 5, 2020 by lautaro
1 Asked on October 5, 2020 by miguel
1 Asked on October 4, 2020 by carlos-roberto-luna-ochoa
1 Asked on October 3, 2020 by david-wong
0 Asked on October 2, 2020 by luis-eduardo-moreno
1 Asked on October 1, 2020 by nikjoseba
2 Asked on September 30, 2020 by juan-pinzn
0 Asked on September 29, 2020 by andres-bonilla
1 Asked on September 28, 2020 by jorge-alonso
2 Asked on September 27, 2020 by diesan-romero
1 Asked on September 25, 2020 by armel-guido
0 Asked on September 25, 2020 by pipo-design
1 Asked on September 24, 2020 by rmoret
0 Asked on September 24, 2020 by facundo-rotger
Get help from others!
Recent Questions
Recent Answers
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP