app.component.html
<div *ngFor="let file of files">
<p>value : {{file.type}}</p>
<p>bool : {{file.type === FileAccessType.ENTRY_CREATE}}
</div>app.component.ts
export class AppComponent{
files : FileAccess[];
FileAccessType : FileAccessType;
}file-access.ts
export interface FileAccess {
path: string;
type: FileAccessType;
timestamp: number;
}file-access-type.ts
export enum FileAccessType{
ENTRY_CREATE,
ENTRY_DELETE,
ENTRY_MODIFY
}模板中的布尔比较未按预期工作
{{file.type === FileAccessType.ENTRY_CREATE}} //always gives false参考:stackblitz
发布于 2020-04-07 01:28:32
在app.component中,您应该像下面的readonly FileAccessType = FileAccessType;一样声明枚举变量
发布于 2020-04-07 10:11:52
Angular组件不能将类型推断为HTML标记的枚举。
*.html
<div *ngFor="let file of files">
<p> Value : {{ file.type }} </p>
<p> Bool : {{ file.type === fileType.ENTRY_CREATE }}
</div>*.ts
export class FilesComponent {
fileType = FileAccessType; // Type assign
files = [...files]; // This is just mocked data
constructor() {}
}或者,您可以将条件的响应性委托给组件,如下所示
export class FilesComponent {
files = [...files]; // This is just mocked data
constructor() {}
isCreateType = (file: FileAccess) => file.type === FileAccessType.ENTRY_CREATE;
}现在,您不必将枚举公开给HTML
<div *ngFor="let file of files">
<p>value : {{ file.type }}</p>
<p>bool : {{ isCreateType(file) }}
</div>https://stackoverflow.com/questions/61065364
复制相似问题