使用 ES6 Map 作为 angular material 复选框的输入会抛出解析错误

Using ES6 Map as an input for angular material checkbox throws Parse errors

我正在尝试在我的组件和模板中使用我的枚举定义,

Angular 版本 - 7 Angular material - 7

我定义了以下枚举,

export enum Status {
  NEW = 1,
  IN_PROGRESS,
  COMPLETED
}

下面是简化的组件代码

// Component definitions ignored here

public statusOptions = Status;
public statusFilters: Map<Status, boolean> = new Map([
  [Status.NEW, true],
  [Status.IN_PROGRESS, true],
  [Status.COMPLETED, false],
]);

我正在尝试在我的模板中使用 statusFilters 地图作为 angular material 复选框 checked/unchecked 状态,如下所示

<mat-checkbox
  [(checked)]="statusFilters.get(statusOptions.NEW)"
  (change)="onStatusChange(statusOptions.NEW, $event)"
  [disabled]="isDisabled('new')"
  >New</mat-checkbox>

但它抛出如下解析错误

任何人都可以让我知道我做错了什么以及如何通过 material 复选框正确使用地图?

如果您需要任何其他详细信息,请告诉我,请原谅我将错误发布为屏幕截图而不是文本,我无法从我的 tmux+zsh 终端设置中复制。

属性 checked 的问题对于 mat-checkbox 不是 @output。它只是一个输入。所以你应该从中删除括号( )

<mat-checkbox
  [checked]="statusFilters.get(statusOptions.NEW)"
  (change)="onStatusChange(statusOptions.NEW, $event)"
  [disabled]="isDisabled('new')"
  >New</mat-checkbox>

参考这个 api - https://material.angular.io/components/checkbox/api

工作副本在这里 - https://stackblitz.com/edit/material-design-angular-checkbox-wqgvqg

您要查找的是文本而不是整数。

public statusFilters: Map<Status, boolean> = new Map([
  [Status[Status.NEW], true],
  [Status[Status.IN_PROGRESS], true],
  [Status[Status.COMPLETED], false],
]);