angular2 material 访问选项卡值

angular2 material access tab values

我有以下代码:

<md-tab-group (selectChange)="doSomething()">
  <md-tab *ngFor="let p of something))">
    <template md-tab-label>
     {{p.name}} ...
    </template>
   </md-tab>
 </md-tab-group>

现在 doSomething() 在 Tab-Change 上被触发,我可以访问选定的索引,但是有什么方法可以访问我的 *ngFor 循环的值吗?我的代码中需要 'p.id' 才能从我的数据库中获取数据,具体取决于打开的选项卡。 或者有没有我没有想到的更优雅的解决方案?感谢您的帮助:)

对于任何感兴趣的人,我都是这样解决我的问题的:

  1. 将数据属性添加到 *ngFor 生成的选项卡并将整个选项卡组传递给我的函数:
<md-tab-group #tabgroup (selectChange)="doSomething(tabgroup)">
          <md-tab *ngFor="let p of something" [attr.data-pid]="p.id">
            <template md-tab-label>
             {{p.name}} ...
            </template>
           </md-tab>
         </md-tab-group>
  1. 获取我选择的 md-tab,它是我的 nativeElement,然后从中获取我的数据属性。不太干净,但可以用。
doSomething(tabgroup: MdTabGroup) {

        let pid = tabgroup._tabs.find((e, i, a) => i == tabgroup.selectedIndex)
            .content.viewContainerRef.element.nativeElement.dataset.pid;

        console.log(pid);
    }

我通过将 $event 发送到函数解决了这个问题

<md-tab-group #tabs (selectChange)="myFunction($event)">
    <md-tab label="My label" data-my-value="123">
        ...
    </md-tab>
    ...
</md-tab-group>

然后从该对象获取值

myFunction($event: any) {
    let myValue = $event.tab.content.viewContainerRef.element.nativeElement.getAttribute('data-my-value');
}