2017-07-31 3 views
1

私のAngular 2アプリのテンプレートでは、画面への印刷フラグを処理しています。これはAngular 2(Angular 4ではなく)であり、Angular 4に移動する準備がまだ整っていないので、私は "else"ブロックを定義することができないので、何かを達成する別の方法を見つけなければなりません"else"ブロックで単純です。* ngIfを使用してアクティブなvs非アクティブなフラグを処理してアングル2のAppで表示する

「完了===偽」のフラグがある場合、このテーブルのデータの列にフラグを印刷しています。つまり、これらのフラグはアクティブです。

私が挑戦しているのは、フラグがないか存在する状況を処理する方法ですが、そのオブジェクトのプロパティ "completed"は "true"に設定されていますそれらはもはやアクティブフラグではない。

基本的には、フラグがある場合には* ngForと* ngIfを使用してフラグを印刷し、それらのフラグに対しては「completed」プロパティを「false」に設定します。フラグがないか、見つかったすべてのフラグに "completed"プロパティが "true"に設定されている場合は、画面に "Clear"を印刷したいだけです。これは私がこれまで持っているものです。

<ng-container *ngFor="let service of record.services"> 

     <ng-template *ngIf="service?.service === 'consulting services' && service?.flags"> 
      <ng-template *ngFor="let flag of service.flags"> 
       <span *ngIf="flag?.completed === false" class="standard-flag" 
        [class.hold-flag]="flag?.flagType === 'hold'">Flag 
       </span> 
      </ng-template> 
      <ng-template *ngFor="let flag of service.flags"> 
       <span *ngIf="flag?.completed === true" class="green-flag">Clear 
       </span> 
      </ng-template> 
     </ng-template> 

    </ng-container> 

今これが生産されているものは、フラグの両方の種類は、(いずれかの「偽」または「真」である「完了」)画面に印刷されています。私がしたいのは、何も言わないということです。フラグがないか、フラグがありますが、すべてが "completed === true"の場合は、画面に "Clear"を表示します。

このように、「フラグ」または「クリア」のいずれかの列には常に何かがありますが、両方が同じ列になることはありません。希望は分かります。

これを達成するために、ここでどのような構文構造を使用できますか?

答えて

1

ngSwitchをご覧ください。

これは、テンプレートで処理されたばかりのswitch文のようです。 switch文を制御するために別の変数を作成する必要があります。うまくいけば、私はあなたが探しているかもしれないような構文構造に沿って渡っているので、あなたはその論理を扱うことができます。

+0

ngSwitchはAngular 2に存在しますか、それともAngularJSですか? – Ademo

+0

ええ、私は間違ったドキュメントにリンクして申し訳ありません、私は私の答えを修正しますが、私は私のプロジェクトでそれを使用しています – chairmanmow

+0

クール。それはまさに私が必要とするものかもしれません。ありがとう、ありがとう。 – Ademo

関連する問題