一般來說是作用域的問題,首先你應該先看標簽內是否有angular2內置生成的自定義屬性比如:
在我們的@Component中,這三個是基本的設置。
頁面上的標簽會生成帶有 _nghost-c1 和 _ngcontent-c1 如下圖:
對應在memumanager組件上的樣式和@import進來的樣式都會帶上 [_ngcontent-c1] 這個作用域,如下圖:
因而,如果你用Js新創建的DOM并插入到節點的時候,可能你新創建的DOM并沒有帶這個作用域,對應你寫得樣式就會不起作用;
或者這個組件的樣式是common的css,當被其他組件引入的時候,因為作用域的原因,也會導致樣式的失效。
而當我們設置了 encapsulation: ViewEncapsulation.None
頁面就會把 _nghost-c1 和 _ngcontent-c1 這兩個作用域去掉,對應Component打包出來的css也沒有這個作用域。