首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 9模板中的枚举值计算不正确

Angular 9模板中的枚举值计算不正确
EN

Stack Overflow用户
提问于 2020-04-07 01:21:07
回答 2查看 590关注 0票数 0

app.component.html

代码语言:javascript
复制
<div *ngFor="let file of files">
 <p>value : {{file.type}}</p>
 <p>bool : {{file.type === FileAccessType.ENTRY_CREATE}}
</div>

app.component.ts

代码语言:javascript
复制
export class AppComponent{
 files : FileAccess[];
 FileAccessType : FileAccessType;
}

file-access.ts

代码语言:javascript
复制
export interface FileAccess {
   path: string;
   type: FileAccessType;
   timestamp: number;
}

file-access-type.ts

代码语言:javascript
复制
export enum FileAccessType{
   ENTRY_CREATE,
   ENTRY_DELETE,
   ENTRY_MODIFY
}

模板中的布尔比较未按预期工作

代码语言:javascript
复制
{{file.type === FileAccessType.ENTRY_CREATE}} //always gives false

参考:stackblitz

EN

回答 2

Stack Overflow用户

发布于 2020-04-07 01:28:32

在app.component中,您应该像下面的readonly FileAccessType = FileAccessType;一样声明枚举变量

票数 2
EN

Stack Overflow用户

发布于 2020-04-07 10:11:52

Angular组件不能将类型推断为HTML标记的枚举。

*.html

代码语言:javascript
复制
<div *ngFor="let file of files">
    <p> Value : {{ file.type }} </p>
    <p> Bool : {{ file.type === fileType.ENTRY_CREATE }}
</div>

*.ts

代码语言:javascript
复制
export class FilesComponent {

  fileType = FileAccessType; // Type assign
  files = [...files]; // This is just mocked data

  constructor() {}

}

或者,您可以将条件的响应性委托给组件,如下所示

代码语言:javascript
复制
export class FilesComponent {

  files = [...files]; // This is just mocked data

  constructor() {}

  isCreateType = (file: FileAccess) => file.type === FileAccessType.ENTRY_CREATE;
}

现在,您不必将枚举公开给HTML

代码语言:javascript
复制
<div *ngFor="let file of files">
    <p>value : {{ file.type }}</p>
    <p>bool : {{ isCreateType(file) }}
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61065364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档