代码之家  ›  专栏  ›  技术社区  ›  Rahul Singh

包含我的角Web组件的样式,这样它就不会渗透到它所使用的组件

  •  3
  • Rahul Singh  · 技术社区  · 6 年前

    我们已经使用AngularV6构建了一个新的网络组件。现在的问题是当我在空白的应用程序中使用这个组件时,它完美地工作,但是当我在一个现有的应用程序中使用它时,它完全破坏了CSS。

    row.[_ngcontent-c1] 一个这样的例子,我们如何确保它给对方流血。

    [ngcontent-%COMP%] [ngcontent-mine%COMP%] 但没什么用即使在来源上也没什么变化

    我调试的源代码是

    https://github.com/angular/angular/pull/17745?#issuecomment-385561001 https://github.com/angular/angular/pull/17745#issuecomment-418658799

    也看了看 Angular Elements - External library's CSS

    1 回复  |  直到 6 年前
        1
  •  0
  •   Collin Stevens    6 年前

    如果您是使用@Angular/elements公开为Web组件的Angular组件的样式,则需要在传递给createCustomElement的Angular组件上将ViewEncapsulation设置为ViewEncapsulation.ShadowDom,该组件使用ShadowDomv1规范。

    请注意,IE11不支持ShadowDOM v1,您必须相应地使用polyfill。

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

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