首页 > 解决方案 > 模板中的枚举 - 此条件将始终返回 'true',因为类型 'RequestStatus.Done' 和 'RequestStatus.Rejected' 没有重叠

问题描述

我有来自 .html 的 html。在这种形式中,我想检查显示不同形式的值。

我在 html 中设置了这个条件:

requestStatus = RequestStatus;

<ng-container
    *ngIf="
      (model.lastStatus.requestStatus == requestStatus.Done ||
        model.lastStatus.requestStatus == requestStatus.Rejected)
      else ChangeStatus
    "
  >

并且 model.lastStatus.requestStatusnumber

这是请求类型:

   export enum RequestStatus {
    New = 1,
    Processing = 2,
    Accepted = 3,
    Rejected = 4,
    Done = 5
}

但是当我运行该项目时,它不会显示任何错误并且运行良好。

但是当我想构建它时,告诉我这个错误:

src/app/pages/pages/e-money-deposit/components/emoney-deposit-detail/emoney-deposit-detail-request/emoney-deposit-detail-request.component.html(10,16) 中的错误:这个条件将始终返回“true”,因为“RequestStatus.Done”和“RequestStatus.Rejected”类型没有重叠。

有什么问题????

标签: javascriptangulartypescript

解决方案


枚举是一个转译功能,在模板中不能很好地工作。

在组件的 typescript 端写一个表达式。

在组件中:

export class WhateverComponent {
  public requestIsFinished() { 
    return (this.model.lastStatus.requestStatus == requestStatus.Done ||
        this.model.lastStatus.requestStatus == requestStatus.Rejected);
    }
}

在模板中:

<ng-container 
    *ngIf=" requestIsFinished() else ChangeStatus"
>


推荐阅读