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

Background-color em cada rota diferente

Professor , uma duvida , caso por exemplo , exista uma necessidade de que para cada rota uma cor diferente seja exibida no background da aplicação.

Uma vez que se eu altero o arquivo style.css e aplico la no body { background-color:blue} , coloco todas as paginas de azul . ( e eu não quero isso , quero cada pagina de uma cor)

e se faço o mesmo no arquivo css do componente nada acontece .

Pesquisando e estudando a documentação cheguei no AfterViewInit

que por sua vez pede o método ngAfterViewInit , que por sua vez depende de um atributo a ser declarado no construtor do tipo ElementRef , no qual me permite fazer manipulação no dom.

Desta maneira .

constructor(private elemento: ElementRef){}

ngOnInit(): void {     
}

ngAfterViewInit(): void {
    this.elemento.nativeElement.ownerDocument.body.style.backgroundColor = 'white';
}

Aplicando esta estratégia eu consigo efetivamente realizar o que desejo.

Minha pergunta é , ESTA É A MELHOR MANEIRA DE EU ESTAR REALIZANDO ESTA TAREFA OU EXISTEM MELHORES PRÁTICAS ?

Desde já agradeço.

2 respostas
solução!

Fala aí Leonardo, beleza? Parabéns pela solução, geralmente temos N soluções para dado um problema.

No seu caso, poderia renderizar diferentes rotas pais para cada URL, seria uma solução.

Mas, eu não vejo problema na sua implementação, concordo e acho que está bom.

Abraços

Teria uma solução utilizando apenas css.. porém ela não é muito recomendada e/ou seu uso deve ser moderado.

Com ::ng-deep você pode fazer qualquer alteração e quebrar o encapsulamento de css do Angular. Independente de qual escopo de css de component você aplique. Por exemplo:

componentX.component.css

::ng-deep body {
    background-color: blue;
}

Espero ter ajudado em algo,

Abçs.