2017-11-13 6 views
1

を使用する私は、次のデータサンプルがあります。私は2つのネストされたループを持っていますが、私は何をしたい、あるをループすることが可能です今の sample dataAngular4 * ngForどのようにループネストされた配列をそのキー名

をこのよう*ngFor="let key of myArray.functionalArea"

などの特定のキー、私の現在のコードは次のとおりです。

<span *ngFor="let jobByField of countOfJobsByFields"> 
    <span *ngFor="let jobByWorkType of countOfJobsByFields?.workType"> 
    <li (click)="searchByWorkType(jobByWorkType?._id)"><a>{{ jobByWorkType?._id }}<span class="badge badge-default pull-right item-plus-icon-custom-style">{{ jobByWorkType.total }}</span></a></li> 
</span> 

と、第2の鍵のための私はヘクタールこのVEの:彼らは私のhtmlで別の要素であるため、私は両方に同じ<span *ngFor="let jobByField of countOfJobsByFields">を使用することはできません

<span *ngFor="let jobByField of countOfJobsByFields"> 
    <span *ngFor="let jobByFunctionalArea of countOfJobsByFields?.functionalArea"> 
    <li (click)="searchByFunctionalArea(jobByFunctionalArea?._id)"><a>{{ jobByWorkType?._id }}<span class="badge badge-default pull-right item-plus-icon-custom-style">{{ jobByFunctionalArea.total }}</span></a></li> 
</span> 

注意。

+0

で使用されてきた余分なdiv要素を避けることができますか? – deen

+0

これがあなたに役立つかどうか教えてください。https://plnkr.co/edit/KTJbPUzrfUftKhcAU29b?p=preview – deen

+0

@rishが私の質問を更新しました。 – jones

答えて

0

はい、次のことができます。

<span *ngFor="let jobByField of countOfJobsByFields"> 
    <ng-template *ngIf='jobByField.workType'> 
     <span *ngFor="let jobByWorkType of jobByField.workType"> 
      {{jobByWorkType._id}} 
     </span> 
    </ng-template> 

    <ng-template *ngIf='jobByField.functionalArea'> 
     <span *ngFor="let jobByWorkType of jobByField.functionalArea"> 
      {{jobByWorkType._id}} 
     </span> 
    </ng-template> 
</span> 
+0

'countOfJobsByFields'は長いリストの配列です。配列アイテムの順序が変わると、' 0、1、etc ... 'から使いたくありません私のコードを変更する必要があります。 – jones

+0

@jones、更新された答えを確認してください、私はそれがあなたを助けることができると思います –

1

次のコードを使用

<span *ngFor="let jobByField of countOfJobsByFields"> 
<div *ngIf='jobByField.workType'> 
    <span *ngFor="let jobByWorkType of jobByField.workType"> 
     {{jobByWorkType._id}} 
    </span> 
</div> 

<div *ngIf='jobByField.functionalArea'> 
    <span *ngFor="let jobByWorkType of jobByField.functionalArea"> 
     {{jobByWorkType._id}} 
    </span> 
</div> 

JSON: -

countOfJobsByFields = [ 
     { 
     workType: [{'_id':'Part Time', 'total':10}, {'_id': 'Full Time', 'total': 20}] 
     }, 
     { 
     functionalArea: [{'_id':'IT', 'total':10}, {'_id': 'Management', 'total': 20}] 
     } 

    ] 

Plunker

+0

あなたの努力に感謝しますが、私はすでに2ループと同じことをしました。 – jones

0

NG-コンテナで次のコードを使用し、それはあなたが配列から、各functionalAreaを反復処理したい* ngIf

<span *ngFor="let jobByField of countOfJobsByFields"> 
    <ng-container *ngIf='jobByField.workType'> 
     <span *ngFor="let jobByWorkType of jobByField.workType"> 
      {{jobByWorkType._id}} 
     </span> 
    </ng-container> 

    <ng-container *ngIf='jobByField.functionalArea'> 
     <span *ngFor="let jobByWorkType of jobByField.functionalArea"> 
      {{jobByWorkType._id}} 
     </span> 
    </ng-container> 
</span>`