#angular #typescript #angular-material
#angular #typescript #angular-материал
Вопрос:
Я использую вкладки angular material в своем проекте: https://material.angular.io/components/tabs/examples
Вот код:
<mat-tab-group animationDuration="0ms" >
<mat-tab></mat-tab>
<mat-tab (click)="setData(upgrade.name)" [label]="upgrade.name" *ngFor="let upgrade of upgradeType; let i = index"> </mat-tab>
</mat-tab-group>
функция:
setData(data){
alert(data)
}
Но при нажатии на вкладку функция setData не выполняется.
Есть идеи, почему функция setData не выполняется при нажатии на вкладку?
Ответ №1:
mat-tab
не имеет щелчка property.so , вам нужно использовать mat-tab-group
свойство (selectedTabChange)
для достижения. Это сработает после изменения вкладки.
Попробуйте использовать:
mat-tab.component.html
<mat-tab-group (selectedTabChange)="setData($event)" animationDuration="0ms" >
<mat-tab></mat-tab>
<mat-tab [label]="upgrade.name" *ngFor="let upgrade of upgradeType; let i = index"> </mat-tab>
</mat-tab-group>
mat-tab.component.ts
setData(event: MatTabChangeEvent) {
console.log("click", event.tab.textLabel); //console out will be click {{upgrade.name}}
}
Вот рабочий stackblitz
:
https://stackblitz.com/edit/angular-wzc6m3-rpap1a?file=src/app/tab-group-align-example.html
Надеюсь, это поможет 🙂
Ответ №2:
Я думаю, вы можете использовать selectedIndexChange
. Пожалуйста, проверьте мой код и ссылку в стекблите, приведенном ниже =>
HTML:
<mat-tab-group
(selectedIndexChange)="test($event)">
<mat-tab *ngFor="let tab of upgradeType; let index = index" [label]="tab.name">
<button mat-raised-button
class="example-delete-tab-button"
(click)="removeTab(index)">
Delete Tab
</button>
</mat-tab>
</mat-tab-group>
TS:
export class AppComponent {
upgradeType=[];
constructor(){
let temp=new UpgradeType();
temp.name="A";
temp.id=1;
this.upgradeType.push(temp);
let temp2=new UpgradeType();
temp2.name="B";
temp2.id=2;
this.upgradeType.push(temp2);
}
test(index){
console.log(index);
console.log(this.upgradeType[index]);
}
}
export class UpgradeType{
name:string;
id:number;
}
ПРИМЕЧАНИЕ: код доступен в stackblitz => Демонстрационный код, который вы хотели