包含我的Angular Web组件的样式,因此不会流到使用它的组件

时间:2018-09-08 17:57:43

标签: angular web-component angular-elements

我们已经使用Angular v6构建了一个新的Web组件。现在的问题是,当我在Blank应用程序中使用该组件时,它可以完美工作,但是当我在现有应用程序中使用它时,它将完全破坏CSS。

我能找到的原因是因为我正在使用bootstrap来构建我现有的应用程序,并且还使用bootstrap来构建该web组件,这导致_ngcontent- *匹配这两个组件,然后彼此出血。像row.[_ngcontent-c1]这样的一个例子,我们如何确保它不会彼此流血。

我什至手动尝试将Web组件js文件的样式从[ngcontent-%COMP%]更改为[ngcontent-mine%COMP%],但是即使在源代码中也没有任何改变

我调试的源是

https://github.com/angular/angular/pull/17745?#issuecomment-385561001https://github.com/angular/angular/pull/17745#issuecomment-418658799 ...帮助自己。

也看着Angular Elements - External library's CSS

1 个答案:

答案 0 :(得分:0)

如果使用@ angular / elements从Angular组件中公开为Web组件的样式正在消失,则需要在Angular上将ViewEncapsulation设置为ViewEncapsulation.ShadowDom,它使用ShadowDOM v1规范。组件,该组件将传递给createCustomElement。

请注意,IE11不支持ShadowDOM v1,因此您必须进行相应的填充。

Web组件中的任何样式都将位于阴影根目录中,而不会影响外部样式。

https://angular.io/api/core/ViewEncapsulation