首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Angular中更改第三方组件的封装?

如何在Angular中更改第三方组件的封装?
EN

Stack Overflow用户
提问于 2019-04-18 02:19:41
回答 1查看 613关注 0票数 0

我使用的是带有本机封装的AngularElements,因此bs4组件可以在bs3项目中使用。示例:

代码语言:javascript
运行
复制
@Component({
  selector: 'app-my-button',
  templateUrl: './my-button.component.html',
  encapsulation: ViewEncapsulation.Native,
  styles: ['@import "~bootstrap/scss/bootstrap.scss";']
})
export class MyButtonComponent {}

问题是如何更改第三方组件的封装,使全局css不会影响它?给定NgbModalWindow组件。如何将其封装更改为ViewEncapsulation.Native并应用特定的样式?

这是related issue

EN

回答 1

Stack Overflow用户

发布于 2019-04-18 03:59:37

如果在encapsulation设置为native的组件中使用第三方组件,则全局样式将不会应用于该第三方组件。例如,如果你在自己的组件中使用第三方组件ngb-modal-window比方说封装设置为native的app-my-own-component,全局样式将不会应用于ngb-modal-window,因为它将位于(父app-my-own-component的)影子根目录中。

代码语言:javascript
运行
复制
@Component({
  selector: 'app-my-own-component',
  template: '<ngb-modal-window></ngb-modal-window>',
  encapsulation: ViewEncapsulation.Native,
  styles: ['@import "~bootstrap/scss/bootstrap.scss";']
})

但是,在这种情况下,在app-my-own-component中添加样式将应用于ngb-modal-window

您可以做的另一件事是在全局级别将encapsulation设置为ViewEnacpsulation.Native,这样应用程序中的所有组件都将具有本机封装。您可以在引导main.ts文件中的应用程序模块时执行此操作:

将此:platformBrowserDynamic().bootstrapModule(AppModule)更改为:

代码语言:javascript
运行
复制
platformBrowserDynamic().bootstrapModule(AppModule, [
  {
      defaultEncapsulation: ViewEncapsulation.Native
  }
])

您必须将ViewEncapsulation导入到main.ts中,无论您要引导模块的文件名是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55733764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档