在Angular 6中,我使用Angular Material通过Tabs显示一些数据。
<mat-tab-group>
<mat-tab
*ngFor="let bar of foo.bar"
[label]="bar.Name"
[ngClass]="bar.IsActive ? 'bar-on' : 'bar-off'">
// ...
</mat-tab>
</mat-tab-group>
无论bar的IsActive
属性是true
还是false
,我都希望为标签设置不同的样式。
如上所述,我尝试使用[ngClass]="bar.IsActive ? 'bar-on' : 'bar-off'"
,但未添加该类。
尽管如此,我还是尝试了简单得多的class = 'bar-on'
,但即使这样也没有添加该类。
因此,我想知道,是否可以向Angular Material选项卡添加自定义类?
编辑:
IsActive
属性是foo
对象的属性。它与选项卡的激活状态无关。活动标签可以显示带有IsActive = false
的对象,反之亦然。
答案 0 :(得分:1)
或者,您也可以使用:: ng-deep对其进行搜索。
答案 1 :(得分:0)
是的,可以自定义角材组件。如果要在应用程序范围内进行更改,则可以将样式添加到styles.css
文件中。
要更改<mat-tab>
,请在styles.css中添加一个类
.mat-tab{
// your code
}
OR
//Preferred
mat-tab{
// your code
}
如果您在Google开发人员工具中调试应用,则会看到角形材料组件继承的类的名称与其标签名称相似。 最好的方法是检查开发人员工具中的名称。
编辑 为您的解决方案:
将此类相应地添加到您的组件中
::ng-deep .mat-tab-label:nth-of-type(1){
color: green;
//your code
}
您可以类似地对其他标签进行更改。
答案 2 :(得分:0)
API允许您有条件地设置整个color
的{{1}}和background-color
,而不是单个mat-tab-group
。
除非您使用一些易破解的本机JavaScript,否则您将无法实现自己想要的目标。
答案 3 :(得分:0)
如果要修改活动标签,请使用以下方法:
.mat-tab-label-active {
//your style here
}
如果要在活动标签中修改标签样式,请执行以下操作:
.mat-tab-label-active .mat-tab-label-content {
//your style here
}
答案 4 :(得分:0)
按属性定位元素以应用样式
:host::ng-deep .mat-tab-label[aria-posinset='1']{
/*apply your css here*/
}
答案 5 :(得分:-1)
您可以..
来代替使用[ngClass]突出显示活动标签.mat-tab-label-active{
//your code...
}
请参阅:https://stackoverflow.com/a/45962498/5319180
也:https://github.com/angular/material2/issues/5014
编辑:按照您所说的获取特定于域的信息。也许这会有所帮助吗?
<mat-tab *ngFor="let bar of bars">
<ng-template mat-tab-label>
<div [ngClass]="...your conditions">
bar.heading
</div>
</ng-template>
...
...
</mat-tab>
答案 6 :(得分:-1)
是的,可以使用ng-template
代替label
。
第一个标签上的ngClass
示例。 stackblitz
<mat-tab-group>
<mat-tab >
<ng-template mat-tab-label>
<span [ngClass]="{'color-red': isError?'red':'black'}">Security</span>
</ng-template>
Content 1
</mat-tab>
<mat-tab label="Second"> Content 2 </mat-tab>
<mat-tab label="Third"> Content 3 </mat-tab>
</mat-tab-group>