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' 才能从我的数据库中获取数据,具体取决于打开的选项卡。
或者有没有我没有想到的更优雅的解决方案?感谢您的帮助:)
对于任何感兴趣的人,我都是这样解决我的问题的:
- 将数据属性添加到 *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>
- 获取我选择的 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');
}
我有以下代码:
<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' 才能从我的数据库中获取数据,具体取决于打开的选项卡。 或者有没有我没有想到的更优雅的解决方案?感谢您的帮助:)
对于任何感兴趣的人,我都是这样解决我的问题的:
- 将数据属性添加到 *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>
- 获取我选择的 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');
}