【发布时间】:2019-08-17 15:45:22
【问题描述】:
每个选项卡都是子组件,并且此页面具有可编辑的数据源。
当有人在子组件中更改表单值时,子组件将 tab-id 返回给父组件。
parent-component 为多个 mat-tab 迭代 tab-id。因此,当从子组件收到 tab-id 时,我想更改选项卡背景颜色。
我是这样编码的。但不起作用,因为当父组件获得 tab-id 时,我不知道如何再次启动 changeTabColor()。
父组件.html
<mat-tab-group>
<mat-tab *ngFor="let tabPageData of tabPageDatas; let index = index" [label]="tabPageData?.tabName" [ngClass]="{'positive': changeTabColor(tabPageData?.tabCode), 'negative': !changeTabColor(tabPageData?.tabCode)}">
<child-component (edited)="edited($event)" [value]="tabPageData"></child-component>
</mat-tab>
</mat-tab-group>
父组件.scss
.positive {
background-color: green;
}
.negative {
background-color: transparent;
}
父组件.ts
editedTabCodeAry = new Array<string>();
edited(tabCode: string) {
this.editedTabCodeAry.push(tabCode);
}
changeTabColor(tabCode: string) {
return this.editedTabCodeAry.indexOf(tabCode) >= 0;
}
子组件.ts
@Output()
edited = new EventEmitter<string>();
// this method run when form in tab edited
dataUpdate(copy: Data) {
// run data update method here
// return edited tabCode
this.edited.emit(this.value.tabCode);
}
【问题讨论】:
-
你可以简单地从编辑的函数中调用 changeTabColor 函数,也许它可以工作
-
但是changeTabColor函数的参数tabCode是针对html中的迭代数据。
-
好的,我正在写一个ans请在几分钟后检查
标签: angular angular-material2 ng-class mat-tab