【问题标题】:dynamically style component containing third-party component depending on context angular根据上下文角度动态设置包含第三方组件的样式组件
【发布时间】:2020-11-17 00:43:17
【问题描述】:

编辑:这里的困难在于我无法更改第三方组件的类。我需要为类mat-form-field-wrapper动态添加样式,这是第三方(角度材料)组件的一部分

假设我有一个组件“app-search-bar”,它包含一个角度材料“mat-form-field”,我想根据搜索栏在我的应用中出现的位置以特定方式设置样式.我知道我可以使用 ::ng-deep 和 !important 标志来设置第三方组件的样式,但是有什么方法可以让我在不同的上下文中动态应用这些样式?

我想要一种方法来做这样的事情:

搜索栏.component.ts:

    export class SearchBarComponent {
      @Input() styles;

搜索栏.component.scss

    ::ng-deep .mat-form-field-wrapper {
      width: styles.width;
    }

【问题讨论】:

  • 你可以参考类似的问题 - stackoverflow.com/questions/60437024/…
  • 这是个好主意,但我需要同一个组件在不同的地方有不同的样式,这种方法会全局添加这些样式

标签: angular dynamic styles


【解决方案1】:

我做的一件事是为每个场景定义一个类并从输入组件中获取该类。示例:

@Input() elClass = "my-default-class";

然后在模板中

<child-component [class]="elClass">...

风格方面:

child-component.my-default-class ::ng-deep {}
child-component.another-class ::ng-deep {}

【讨论】:

  • 这很好,但我需要设置样式的是我的组件中的第三方组件,而不是组件本身
  • @PeterWeeks 您可以在 ::ng-deep 之后添加您想要定位的任何内容
  • ohhhhh 我明白你在说什么!太精彩了!!我试试看谢谢! :)
  • 编辑:我会提出一个新问题。谢谢您的帮助!好的,现在如果我想要设置样式的地方之一位于动态添加到 dom 的模态中,我该怎么办? css 似乎没有生效
猜你喜欢
  • 2017-12-29
  • 2018-05-25
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2018-06-27
相关资源
最近更新 更多