首页 > 解决方案 > 在 Angular 模板中使用元组类型

问题描述

如何在角度模板中使用元组类型?我在控制器中声明了两个属性:

export enum DisplayMode1 {
    Edit = 'Edit',
    Decided = 'Decided',
    PartsRequested = 'PartsRequested'
};
export enum DisplayMode2 {
    Edit = 'Edit',
    Submitted = 'Submitted',
    Returned = 'Returned'
};

displayMode: [
    DisplayMode1,
    DisplayMode2,
  ];
DisplayModes = [
    DisplayMode1,
    DisplayMode2,
  ];

<h3
      *ngIf="            
        displayMode !== [DisplayModes[0].Decided, DisplayModes[1].Submitted]
      "
    >

当我尝试在模板中使用它们时,出现构建错误:

类型 'typeof DisplayMode1 | 上不存在属性 'Submitted' 类型的 DisplayMode2'。类型“typeof DisplayMode1”上不存在属性“已提交”。

218 displayMode !== [DisplayModes[0].Decided, DisplayModes[1].Submitted]

但是,如果我在模板中使用 DisplayModes[].Edit,这对于两种显示模式都很常见,它可以工作。

标签: angulartemplatestuples

解决方案


DisplayModes = [
    DisplayMode1,
    DisplayMode2,
  ] as const; // will fix your main error

我注意到的另一个问题是displayMode !== [DisplayModes[0].Decided, DisplayModes[1].Submitted]。它永远不会起作用,因为数组是通过引用进行比较的。所以你需要做某事displayMode[0] !== DisplayModes[0].Decided && displayMode[1] !== DisplayModes[1].Submitted


推荐阅读