2016-12-14 58 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'); 
    }