如何在标签内的同一个 *ngIf 上设置多个条件?

How can I set multiple conditions on the same *ngIf within a tag?

我有一个 form,在 angular material 中有多个字段。在一个字段中,我需要建立一个条件,如果用户是“admin”,它占据 table 的 2 列,如果不是,它占据 3 列。

这是我当前的代码:

<mat-grid-tile [colspan]="3">
     <div fxFlex>
          <date fxFlex title="Fecha inicio" [monthInput]="true" formControlName="date"></date>
     </div>
</mat-grid-tile>

这是我正在测试的代码,但我无法让它工作:

<mat-grid-tile *ngIf="is_admin; then [colspan]="2"; else [colspan]="3"">
     <div fxFlex>
          <date fxFlex title="Fecha inicio" [monthInput]="true" formControlName="date"></date>
     </div>
</mat-grid-tile>

如何设置标签内的条件以使其适合列?

您不应为此使用 *ngIf,因为 *ngIf 控制元素是否可见。

您可以在 属性 绑定中使用表达式:

<mat-grid-tile [colspan]="is_admin ? 2 : 3">
     <div fxFlex>
          <date fxFlex title="Fecha inicio" [monthInput]="true" formControlName="date"></date>
     </div>
</mat-grid-tile>

您可以找到有关 Angular 的绑定语法的更多信息 here

[colspan]="is_admin ? 2 : 3"
*ngIf="is_admin; then [colspan]="2"; else [colspan]="3""
                                   ^
                                   |

简单地去掉这个分号?

您可以使用两种方法解决问题:

使用 属性 绑定

<mat-grid-tile [colspan]="is_admin ? 2 : 3">
     <div fxFlex>
          <date fxFlex title="Fecha inicio" [monthInput]="true" formControlName="date"></date>
     </div>
</mat-grid-tile>

或者,如果您仍然对 *ngIf

感兴趣
<mat-grid-tile *ngIf="is_admin else not_admin" [colspan]="2">
     <div fxFlex>
          <date fxFlex title="Fecha inicio" [monthInput]="true" formControlName="date"></date>
     </div>
</mat-grid-tile>

<ng-template #not_admin>
 <mat-grid-tile [colspan]="3">
     <div fxFlex>
          <date fxFlex title="Fecha inicio" [monthInput]="true" formControlName="date"></date>
     </div>
 </mat-grid-tile>
</ng-template>

[colSpan]="is_admin ? 2 : 3"

colSpan="{{ is_admin ? 2 : 3 }}"

两者都可以。但 top 方法更受欢迎,因为它也易于阅读!