Search code examples
javascripttypescriptangularjs-directiveangular7angular-components

How to apply multi ngif to data display on table?


How to apply multi *ngIf to data returned to table?

I need to control column name based on multi condition *ngIf but i don't know which tag used and where :

*ngIf="coln=repcon.fieldName && repcon.columnType=1" then display data as icon link on field onlineurl
*ngIf="coln=repcon.fieldName && repcon.columnType=2" then make it as hidden field to field onlineurl

I work on angular 7 app I displayed dynamic data no fixed header or content

 <thead >
                  <tr>
                    <th  *ngFor="let coln of headerCols">


                        {{coln}}

                    </th>


                  </tr>
                </thead>
 <tbody>
                  <ng-container *ngFor="let repcon of ReportControl">
                  <ng-container *ngFor="let repdata of ReportData">
                    <tr *ngFor="let rep of reportdetailslist">

                      <td *ngFor="let coln of headerCols">

                        <span>{{rep[coln]}}</span>
                   // i think here can applied multi ng if but which tag used .
                        </td>

                    </tr>
                  </ng-container>
                </ng-container>

                </tbody>
sample data

ReportId   onlineurl          reportdate
1222       localhost:5000/    12-12-2018
1222       localhost:7000/    12-01-2019
1222       localhost:9000/    12-12-2020
control report
reportid  fieldname   columntype
1222       onlineurl     1

Solution

  • Given your conditions, you can nest *ngIf :

    <td *ngFor="let coln of headerCols">
        <div *ngIf="coln=repcon.fieldName">
    
            <div *ngIf="repcon.columnType=1">data as icon link</div>
    
            <div *ngIf="repcon.columnType=2">hidden field</div>
        </div>
    </td>
    

    Or with *ngSwitch :

    <td *ngFor="let coln of headerCols">
        <div *ngIf="coln=repcon.fieldName" [ngSwitch]="repcon.fieldName">
    
            <div *ngSwitchCase="1">data as icon link</div>
    
            <div *ngSwitchCase="2">hidden field</div>
    
        </div>
    </td>