【发布时间】:2020-06-28 17:51:47
【问题描述】:
我基于Mat-table(Angular Material)创建了一个共享组件(<nextgen-table></nextgen-table>)。在项目中使用此组件时,发现我需要更改表格列的行为(宽度)。
我已经在我的其他组件(比如说 X, Y )中导出了 nextgen-table ,其中 nextgen-table 当然是一个子组件。
要更改 mat-table 特定列的宽度,我必须使用以下内容:
mat-cell:nth-child(1),
mat-header-cell:nth-child(1) {
flex: 0 0 40%;
text-align: left;
}
mat-cell:nth-child(2),
mat-header-cell:nth-child(2) {
flex: 0 0 20%;
}
我在 X.component.css 中实现的上述 CSS 代码我猜是因为封装而无法正常工作。
经过一番搜索,我发现solution 只需在x.component.ts 的组件装饰器中添加encapsulation: ViewEncapsulation.None 即可正常工作。在此解决方案之后,我从组件 X 导航到未实现上述 CSS 代码的组件 Y。但是组件 Y 有前两列,因为我只想要组件 X,但不知何故,组件 Y 也有我不想要的组件 Y。
所以我的问题是如何从父组件更新nextgen-table 的样式,该样式仅适用于父组件,不适用于其他组件。
我也试过用
:host(mat-cell:nth-child(1)){
flex: 0 0 40%;
text-align: left;
}
:host(mat-header-cell:nth-child(1)) {
flex: 0 0 40%;
text-align: left;
}
但没有发生/改变。
提前感谢您的帮助
【问题讨论】:
-
你可以阅读这篇文章也许对你有帮助https://stackoverflow.com/a/36528769/9148278
标签: css angular angular-material components encapsulation