2016-12-14 81 views
2

我有以下代码:angular2材料获得标签值

<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的()获得对制表变化解雇,我可以访问选定的指数,但有什么办法来访问我的价值观* ngFor循环?在我的代码中,我需要'p.id'来从数据库中获取数据,具体取决于打开的选项卡。 或者我有没有想过的更优雅的解决方案?感谢您的帮助:)

+0

需要如何获取值从数据库中获取数据? –

+0

只是通过angular2的http ..但这不是重要的在这里。我只是想澄清一下,我需要从外部md-tab-group访问制表符的模板变量。 –

+0

你想如何访问它? –

回答

1

任何有兴趣,我解决我的问题是这样的:

  1. 添加数据ATTRIB由* ngFor生成的标签和整个tabgroup传递给我的功能:
<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-标签上,与它我nativeElement,并从该得到我数据ATTRIB。不漂亮&干净,但它的作品。
  • doSomething(tabgroup: MdTabGroup) { 
    
         let pid = tabgroup._tabs.find((e, i, a) => i == tabgroup.selectedIndex) 
          .content.viewContainerRef.element.nativeElement.dataset.pid; 
    
         console.log(pid); 
        } 
    
    0

    我解决它通过在$事件发送到功能

    <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'); 
    }