2016-05-17 68 views
8

有幾種方法可以得到一個元素的樣式在Angular2:Angular2適當的方式來獲得元/組件樣式

假設您正在一個組件或指令內:使用nativeElement

1- :

let color = elementRef.nativeElement.style.color; 

但是,不建議這樣做,因爲你不想直接訪問nativeElement如果您的目標是使用類似在未來網絡工作者。

2-使用Ruler

this.domAdapter = new browser.BrowserDomAdapter(); 
    this.ruler  = new Ruler(this.domAdapter); 
    this 
     .ruler 
     .measure(this.elementRef) 
     .then((rect) => { 
      // Now we have access to height and width and left and top 
     }); 

這是很酷,但統治者不會給我顏色,或任何其他款式,基本上統治者只給出了矩形(這是Element.getBoundingClientRect( )基本上)。

而且,我們不能用渲染得到元素的樣式,它僅提供方法來設置風格。

回答

2

這是我給,它可能不是正確的一個可能的答案,但是這是迄今爲止我已經有了:

可能的答案:

只是看着Ruler類和實現它使用DomAdapter,它傳遞本地元素來獲取矩形。

// This is native Angular2 source code : 
    var clntRect = this.domAdapter.getBoundingClientRect(el.nativeElement); 

我認爲這意味着,如果我們想要得到的風格,我們可以使用domAdapter像:

let color = this.domAdapter.getStyle(this.elementRef.nativeElement , 'color') 

正如我們所看到的,是domAdapter提供getStyles方法,所以這應該是它有希望!

我會提供更簡明的信息,因爲我正在進行搜索和調查。

+0

如果我在css中爲div設置background-position-y,然後嘗試從您的答案中使用方法獲取該值,我將獲得空值......任何幫助都將被讚賞 – Dmitry