如何欺骗 AOT 合规性检查/TS 编译器在 Angular 中给定的代码段?



我有一系列权限,如下所示:

permissions={
view: "permissionName1",
create: "permissionName2"
}

在组件的构造器中,我有将权限名称转换为布尔值的方法,这些值指向您是否授予权限,因此生成的运行时权限将如下所示。

permissions={
view: true,
create: false
}

当我需要在模板中使用权限时,它工作得很好,如下所示:

<ng-template *ngIf="permissions.view"> </ng-template>

当我想在多种条件下使用权限时出现问题,如果喜欢的话

<ng-template *ngIf="someSortOfCondition && permissions.view"> </ng-template>

这在使用 AOT 编译时给了我一个错误,说

类型">

字符串"不能分配给类型"布尔值"。

我从记忆中写下了这个,所以它可能不是确切的错误消息。很明显,我想在这个条件表达式中使用 String 作为布尔值,因为在编译时permissions.view确实是一个字符串 - 它是一个权限名称而不是它的值。

有没有办法欺骗AOT分析器忽略我的责任的给定情况?权限在构造函数中初始化。

如果你在模板中编写permissions['view']而不是permissions.view,它将起作用

对于AOT编译检查,您可以看到此问题根据 菲利佩·席尔瓦

我同意这将非常有用,但正确的重现要求 因为它是 https://github.com/mgechev/codelyzer。这是附加组件 我们使用的 tslint,它实现了 Angular 特定的 fules。

最新更新