каждая вкладка является дочерним компонентом, и эта страница имеет редактируемый источник данных.
когда кто-то изменяет значение формы в дочернем компоненте, дочерний компонент возвращает идентификатор табуляции родительскому компоненту.
родительский компонент повторяет tab-id для нескольких mat-tab. поэтому при получении идентификатора вкладки от дочернего компонента я хочу изменить цвет фона вкладки.
Я так закодировал. но не работает, потому что я не знаю, как снова вызвать changeTabColor (), когда родительский компонент получил идентификатор табуляции.
родитель-component.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>
родитель-component.scss
.positive {
background-color: green;
}
.negative {
background-color: transparent;
}
родитель-component.ts
editedTabCodeAry = new Array<string>();
edited(tabCode: string) {
this.editedTabCodeAry.push(tabCode);
}
changeTabColor(tabCode: string) {
return this.editedTabCodeAry.indexOf(tabCode) >= 0;
}
ребенок-component.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);
}