Javascript 包括检查Angular component中的内联数组创建。html不编译
我有这个Javascript 包括检查Angular component中的内联数组创建。html不编译,javascript,angular,typescript,Javascript,Angular,Typescript,我有这个enum: export enum Status { SOME_VAL = "SOME_VAL", SOME_VAL_2 = "SOME_VAL_2", SOME_VAL_3 = "SOME_VAL_3"; } 和我的界面: export SomeInterface { status?: Status; } 的简单用法包括在some.component.ts中创建内嵌数组的方法: let so
enum
:
export enum Status {
SOME_VAL = "SOME_VAL",
SOME_VAL_2 = "SOME_VAL_2",
SOME_VAL_3 = "SOME_VAL_3";
}
和我的界面
:
export SomeInterface {
status?: Status;
}
的简单用法包括在some.component.ts
中创建内嵌数组的方法:
let someVal: boolean = [Status.SOME_VAL, Status.SOME_VAL_2].includes(this.someObject.status);
一切正常。但是,在some.component.html
中:
<div *ngIf="[Status.SOME_VAL, Status.SOME_VAL_2].includes(someObject.status)">
...
</div>
并且不编译。转换为:
<div *ngIf="$any([Status.SOME_VAL, Status.SOME_VAL_2]).includes(someObject.status)">
...
</div>
在我的some.component.ts
中,我可以从html
中引用它,您需要使用enum实例来执行此操作。为此,请在.ts中声明一个变量,该变量保存枚举引用并可在.html模板中使用。例如:
在ts中:
public status = Status;
在html中:
<div *ngIf="[status.SOME_VAL, status.SOME_VAL_2].includes(someObject.status)">
...
</div>
...
我创建了一个AsPipe
:
@Pipe({
name: 'as'
})
export class AsPipe implements PipeTransform {
transform<T>(value: any, args: T): T {
return value as T;
}
}
我有。那是关于你的someObject.status
。它的值无法转换为状态枚举的项。你能验证一下吗?我已经更新了问题,它们是一样的。如果不是,则让someVal:boolean=[Status.SOME\u VAL,Status.SOME\u VAL\u 2]。包括(this.someObject.Status)
在ts
中不起作用。。它应该会起作用。我在html模板中使用了[].indexOf(),效果很好。你可以在.ts中创建另一个变量,并给它数组someVal:Status[]=[…]
,然后*ngIf=“someVal.includes(someObject.Status)”
,因为据我所知,这个错误不会出现。你可能会遇到一些问题。例如,status?:status
的类型为status | undefined
,因此在let-someVal:boolean=…
中已经出现错误。另外,如何分配someObject.status
?应该类似于例如状态:status.SOME\u Val
。
<div *ngIf="[status.SOME_VAL, status.SOME_VAL_2].includes(someObject.status)">
...
</div>
@Pipe({
name: 'as'
})
export class AsPipe implements PipeTransform {
transform<T>(value: any, args: T): T {
return value as T;
}
}
*ngIf="([Status.SOME_VAL, Status.SOME_VAL_2] | as: [Status]).includes(someObject.status)"