Angular multiple ngif else在模板中传递参数

时间:2018-02-13 22:38:47

标签: angular angular-template

是否可以在angular.html中执行两个ngIf?

一个例子:

if(1=2){
}else{
    if(){
    }
}

我需要做两次检查。

检查教师的限制是否为假,以检查教室的可用性。

遵循我的代码示例。我是棱角分明的新手,我不知道一切如何运作。

   <td *ngIf="!restricaoSegUm; else templateName" *ngIf="!restricaoSalaSegUm; else sala" [dragula]='"another-bag"' [dragulaModel]='segUm'>
      <div [@resultadoAnimacao]="animationsState" class="cursor-pointer"  *ngFor='let s1 of segUm' (dblclick)="removeNumbers(s1,this.segUm)">{{s1?.no_diciplinas}}</div>
    </td>

<ng-template #templateName >
    <td style="background-color: rgb(244, 67, 54);"></td>
</ng-template>
<ng-template-sala #sala>
    <td style="background-color: rgb(244, 146, 54);"></td>
</ng-template-sala>

4 个答案:

答案 0 :(得分:0)

你可以将2 * ngIf包裹在彼此内。

所以喜欢

<div ng-if="myVar">
<div ng-if="myOtherVar">
<!--
Your code
-->
</div>
</div>

答案 1 :(得分:0)

您可以将conditions放在一个*ngFor内,如果在单个元素上使用2 *ngFor则不正确:

<td *ngIf="!restricaoSegUm && !restricaoSalaSegUm; else templateName" [dragula]='"another-bag"' [dragulaModel]='segUm'>

答案 2 :(得分:0)

  • 您不应该放置2 * ngIfs,而应该执行此操作*ngIf="conditions; then thenBlock; else elseBlock"
  • conditions部分,检查教师限制,一旦在templateName块中,您就可以确定要使用的背景颜色。

试试这个:

<td *ngIf="!restricaoSegUm; else templateName" 
    [dragula]='"another-bag"' [dragulaModel]='segUm'>
    <div [@resultadoAnimacao]="animationsState" class="cursor-pointer"  *ngFor='let s1 of segUm' (dblclick)="removeNumbers(s1,this.segUm)">{{s1?.no_diciplinas}}</div>
</td>

<ng-template #templateName >
    <td [ngStyle]="restricaoSalaSegUm ? { 'background-color': 'rgb(244, 67, 54)' } : { 'background-color': 'rgb(244, 146, 54);' }">
        <div [@resultadoAnimacao]="animationsState" class="cursor-pointer"  *ngFor='let s1 of segUm' (dblclick)="removeNumbers(s1,this.segUm)">{{s1?.no_diciplinas}}</div>
    </td>
</ng-template>

我不明白你的逻辑条件是什么评价,希望我能指出你正确的方向。

答案 3 :(得分:0)

代替结构指令*ngIf来完成您正在做的事情。您可以尝试使用ngTemplateOutletngTemplateOutletContext来帮助构建标记,使标记更具可读性。

<ng-container [ngTemplateOutlet]="(statement) ? if : else"
              [ngTemplateOutletContext]="{ data: { key: value, values: [...], ... } }"></ng-container>

<ng-template #if>
  <div>...</div>
</ng-template>

<ng-template #else 
             let-data="data" 
             let-values="values" 
             let-...="'...'">

  <ng-container [ngTemplateOutlet]="(statement) ? innerIf : innerElse"></ng-container>

  <ng-template #innerIf>
    <td [ngClass]="'text-danger': data.key === 'something'">{{ data.key }}</td>
  </ng-template>

  <ng-template #innerElse>
    <td *ngFor="let value in values">{{ value }}</td>
  </ng-template>

</ng-template>

无论模板中采用哪种方法(*ngIf*ngTemplateOutlet,...),这种复杂性似乎都是最好的解决方案,那就是创建更多的无状态组件。