當前我在我的網站的GUI中使用progressbar的ng2-bootstrap
。我用這一步的HTML很簡單:覆蓋angular2中子div的CSS屬性
<div class="col-lg-8 col-md-4">
<progressbar max="100" class="progress-striped" [value]="progress">{{progress}}%</progressbar>
</div>
這被渲染到下面的HTML:
<div class="col-lg-8 col-md-4">
<progressbar class="progress-striped" max="100">
<div progress="" max="100" class="progress" style="height: 30px;">
<bar>
<div aria-valuemin="0" class="progress-bar" role="progressbar" style="min-width: 0px; width: 0%;" ng-reflect-initial-classes="progress-bar" aria-valuenow="0" aria-valuetext="0%">
0%
</div>
</bar>
</div>
</progressbar>
</div>
我刪除了一些角指令,以提高可讀性
的進度條的高度在css-class進度中的第二個div
中設置,這是我無法訪問的,因爲它在組件提供的源代碼中設置。如果我想改變字體大小,最內層的div
是我需要訪問的。
我試圖覆蓋父級的樣式來設置高度,但進度類更具體,因此我無法覆蓋它。
我發現它使用ElementRef
和Renderer
一個不是很漂亮的解決方案,但是這個尺度非常糟糕,如果有多個progressbars
(ATM我試圖訪問第二進度)會變得一團糟:
ngAfterViewInit() {
this.renderer.setElementStyle(this.el.nativeElement.querySelector('progressbar').querySelector('div'), 'height', '30px');
this.renderer.setElementStyle(this.el.nativeElement.querySelector('progressbar').querySelector('div').querySelector('bar').querySelector('div'), 'font-size', '15px');
}
有沒有更好的方法來解決這個問題?作爲最後的手段,我可以嘗試調整組件的源代碼來訪問這兩個值,但實際上我想避免這種情況。
它的工作原理,很好!如果我沒有記錯,我嘗試了這個解決方案,但是我把css代碼放在了components.css文件中。現在我查找了主題視圖封裝,並將ViewEncapsulation設置爲None,它也與component.css文件一起使用 – Akkusativobjekt