В Angular вы не можете перезаписывать родительские стили из стилей компонентов, потому что стили вашего компонента инкапсулированы и работают только для вашего компонента.
Вы должны добавить encapsulation: ViewEncapsulation.None
к @Componentn({})
-определению в каждом компоненте, где вы хотите переопределить css для тега body.
Вот рабочий пример:
import { Component, Input , ViewEncapsulation} from '@angular/core';
@Component({
selector: 'another',
template: '<a routerLink="/">main</a>',
styles: [`body {
position: fixed;
min-width: 100%;
background-image: url("https://source.unsplash.com/1920x1080?landscape") !important;
background-repeat: no-repeat;
background-size: 100%;
background-position: center;
background-size: cover;
}`],
encapsulation: ViewEncapsulation.None
})
export class AnotherComponent {
constructor(){}
}
Важно: Отключив инкапсуляцию, стили компонентов будут приняты глобальными и будут переопределять стили с теми же классами, идентификаторами или тегами.
Подсказка: Вы можете использовать это решение, но будет лучше, если вы установите фоновое изображение для собственных тегов html компонентов.
Лучшее решение для вашего случая использования:
Добавьте div обертки в шаблон компонентов another
и main
. Затем добавьте свои стили к этому div обертки. Как это:
another.component.ts
@Component({
selector: 'another',
template: '<div><a routerLink="/">main</a></div>',
styles: [`div {
position: fixed;
min-width: 100%;
background-image: url("https://source.unsplash.com/1920x1080?landscape") !important;
background-repeat: no-repeat;
background-size: 100%;
background-position: center;
background-size: cover;
}`]
})
main.component.ts
@Component({
selector: 'main',
template: '<div><a routerLink="/another">anotherComponent</a></div>',
styles: [`div {
position: fixed;
min-width: 100%;
background-image: url("https://source.unsplash.com/1920x1080?stars") !important;
background-repeat: no-repeat;
background-size: 100%;
background-position: center;
background-size: cover;
}`]
})
Вот рабочий пример stackblitz .
Подробнее о ViewEncapsulation
на угловых документах .