2017-11-21 11 views
1

こんにちは、私はここでやっていますか?私はAPIデータを呼び出していますが、の場合の場合は、falseに検証すると余分なdivを作成するようです。角4 | * ngIfがトリガーされたときに余分なdivを作成する

<div *ngFor="let apidata of data"> 
    <div class="box" *ngIf="apidata.Zone == 8"> 
     <div class="box-assignmentnumber-holder"> 
     <span id="AssignmentNumber">{{apidata.Assignment}}</span> 
     </div> 
     <div class="newAssignment"> 
     <span>{{ apidata.Operator == null ? 'New' : apidata.Operator }}</span> 
     </div> 
    </div> 
    </div> 

私のコードで余分なdivを削除するにはどうすればよいでしょうか?

<div></div> <---extra div when false 
<div></div> <---extra div when false 
<div class="box"> 
    <div class="box-assignmentnumber-holder"> 
      <span>123123</span> 
    </div> 
</div> 
<div></div> <---extra div when false 

答えて

2

あなたがする必要があるのは*ngForng-containerdivを置き換えるです:

<ng-container *ngFor="let apidata of data"> 
    <div class="box" *ngIf="apidata.Zone == 8"> 
     <div class="box-assignmentnumber-holder"> 
      <span id="AssignmentNumber">{{apidata.Assignment}}</span> 
     </div> 
     <div class="newAssignment"> 
      <span>{{ apidata.Operator == null ? 'New' : apidata.Operator }}</span> 
     </div> 
    </div> 
<ng-container> 

条件がfalseある場合、これはdivs余分を作成しません。関係なく、あなたの状態の

WORKING DEMO

+0

私はこの1つを試していますが、余分なdivを作成しています。私の問題は私のループの中にあると思う。 –

0

..下になり、余分なdiv要素を作成することを避けるために代わりのdiv

ng-containerを利用して、我々は代わりに NG-コンテナディレクティブを使用することができます。

ng-container *ngIf="lessons"> 
    <div class="lesson" *ngFor="let lesson of lessons"> 
     <div class="lesson-detail"> 
      {{lesson | json}} 
     </div> 
    </div> 
</ng-container> 

ng-containerディレクティブは、 という要素を提供し、ページのセクションに構造ディレクティブ( )を追加するだけで、余分な要素を作成する必要はありません。

ng-containerディレクティブのもう1つの主要な使用例があります。 は、ページを に動的に挿入するためのプレースホルダを提供することもできます。

リファレンス - https://blog.angular-university.io/angular-ng-template-ng-container-ngtemplateoutlet/

+0

を試してみてください必要があります真または偽であります探していますが、検証したいデータがAPIオブジェクトの内部にある場合はどうなりますか?私はを実行すべきですか? –

+0

はい、それはあなたがこの問題をstackblitzで複製することができればいいです、それ以外の場合は –

+0

を試すことができますが、それは私の最後では機能しません。私はそれにオブジェクトにアクセスできるように私の最初のAPIデータをループする必要があるため。 –

0

あなたは常にのでループ

<div *ngFor="let apidata of data"> 

で作成したdiv要素が、これは何イムあるこの

<ng-container *ngFor="let apidata of data"> 
    <div class="box" *ngIf="apidata.Zone == 8"> 
     <div class="box-assignmentnumber-holder"> 
      <span id="AssignmentNumber">{{apidata.Assignment}}</span> 
     </div> 
     <div class="newAssignment"> 
      <span>{{ apidata.Operator == null ? 'New' : apidata.Operator }} 
      </span> 
     </div> 
    </div> 
</ng-container> 
+0

これはうまく動作しません。私はすでにこれを試していますが、うまく動作しませんでした。 –

+0

オハイオ州のありがとう男それは動作します:私の最初のコメントに申し訳ありません。 –

関連する問題