Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Propriedades e variáveis

Olá,

No primeiro caso abaixo estou criando uma variável dentro do ngOnInit. E no segundo caso estou criando uma propriedade da classe.

No meu modo bem leigo de entender me parece que a propriedade é como se fosse uma variável global da classe, que poderia usar em qualquer método, utilizando o 'this.'

Mas creio que esteja totalmente errado. Pois o primeiro caso funciona normal. E o segundo caso não funciona. Porque?

})
export class SidenavComponent implements OnInit {

  constructor() {}

  ngOnInit() {
    const collapse:HTMLElement = <HTMLElement>document.querySelector('.snav-collapse');
    collapse.addEventListener("click", () => { alert (" teste ")})
  }
}
export class SidenavComponent implements OnInit {

  collapse:HTMLElement = <HTMLElement>document.querySelector('.snav-collapse');

  constructor() {}

  ngOnInit() {
    this.collapse.addEventListener("click", () => { alert (" teste ")})
  }
}
3 respostas

Fala ai Enzo, tudo bem? A diferença está no momento em que a busca do document.querySelector('.snav-collapse') será realizada, isso porque em um momento como você criou uma propriedade da classe, isso vai acontecer durante a instanciação dessa classe.

Já no exemplo onde você colocou dentro de um ciclo de vida do componente, o mesmo apenas será buscado quando de fato esse ciclo for disparado.

Espero ter ajudado.

Fala Matheus,

Legal, entendi mais ou menos! A propriedade da classe então não é acessível dentro dos ciclos de vidas do componente ? Porque se o NgOnInit consegue chamar as propriedades da classe, deveria funcionar..

solução!

Fala Enzo, na verdade elas são acessíveis, mas, o valor dela pode não ter encontrado, isso porque o momento que o querySelector foi realizado, o seu componente não tinha terminado de ser montado e renderizado na página.

Isso por conta dos ciclos de vidas do componente.

Espero ter ajudado.