Мой любимый подход к выполнению подобных вещей - добавить класс в тег html в зависимости от маршрута.Например, у нас есть некоторый код в нашем базовом компоненте макета (вы можете поместить его в свой корневой компонент), который делает это внутри ngOnInit:
let wrapper = ''
const path = this.activatedRoute.snapshot.routeConfig.path
wrapper += this.tidyPath(path)
if (wrapper !== '') wrapper += '-'
const childPath = this.activatedRoute.snapshot.firstChild.routeConfig.path
wrapper += this.tidyPath(childPath)
this.routeWrapperCssClass = wrapper
$('html').addClass(this.routeWrapperCssClass)
Это добавит класс к вашему HTML-тегу, чтобы он выгляделвот так (хотя вам, возможно, придется настроить этот код в соответствии с вашим приложением):
<html class="registration">
....
</html>
Класс будет мгновенно обновляться при каждом изменении маршрута.
Теперь вы можете сделать это в своемглавная таблица стилей:
body {
background-color: pink;
}
html.registration body {
background-color: yellow;
}
Вы также можете выполнять такие вещи, как скрытие элементов на основе класса, добавленного в тег html, следующим образом:
.navbar {
display: block;
}
html.registration .navbar {
display: none;
}
Поскольку вы знаете, по какому маршруту вы находитесь навсякий раз, когда у вас есть полный контроль над CSS.
PS вы можете использовать render2 вместо jQuery для манипулирования DOM - см. эту статью ... https://alligator.io/angular/using-renderer2 ... никогда не использовал его самраньше, но почти идентичен синтаксису jQuery - спасибо Pratap AK за этот ответ