gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:32:28 35 4
gpt4 key购买 nike

我们使用 Angular v6 构建了一个新的网络组件。现在的问题是,当我在空白应用程序中使用该组件时,它可以完美运行,但当我在现有应用程序中使用它时,它会完全破坏 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

最佳答案

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

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

您的 Web 组件中的任何样式都将位于 shadow-root 内,不会影响外部。

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

关于angular - 包含我的 Angular Web 组件的样式,这样它就不会渗透到使用它的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237950/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com