2 回答

TA貢獻1796條經驗 獲得超7個贊
改變封裝很少是一件好事。我將創建一個狀態服務來更改組件的類和樣式。
它應該看起來像這樣
服務
import { Injectable } from '@angular/core';
@Injectable()
export class StyleService {
private className: Subject<string> = new Subject<string>();
public className$: Observable<string> = this.className.asObservable();
set(className: string): any {
this.className.next(className);
}
}
為了聆聽變化
...
private sub: Subscription;
...
this.sub = this.styleService.className$
.subscribe(class => {
// do what you need to do
})
...
ngOnDestroy() {
// so you dont have memory leaks
this.sub.unsubscribe();
}
當您想更改類時,您只需調用 set 函數即可。唯一缺少的是在主樣式文件中聲明類。
如果您需要有一個 className 初始值,您可以使用BehaviorSubject,如下所示:
private class: BehaviorSubject<string> = new BehaviorSubject<string>('className');

TA貢獻1878條經驗 獲得超4個贊
我自己發現了這個問題
感謝所有幫助過我的人。
問題是無法在組件 css 中編輯 html 和 body html 標簽。正確的方法是刪除 ViewEncapsultation 并將以下代碼行添加到構造函數中。
document.body.style.backgroundImage = 'url(\'../../../assets/images/background.jpg\')';
document.body.style.backgroundSize = 'cover';
document.body.style.backgroundRepeat = 'no-repeat';
document.body.style.height = '100%';
這是您在每個組件中設置 html 和 body 標簽樣式的方法。如果您需要設計整個背景的樣式,這也適用。
- 2 回答
- 0 關注
- 141 瀏覽
添加回答
舉報