Angular AOT在使用异步管道评估ngIf时引发错误

问题描述

我有一个带有Need to use get() method for accessing particular field of a doucment like this document.get('user_name') instead of document['user_name'] So you have to access all fields as follows: document.get('user_name') document.get('user_mobile') document.get('user_address') 的角度组件,如果用户没有权限或者如果他们没有要显示的内容,它将隐藏导航元素。它首先检查当前加载的用户是否具有权限,然后检查他们是否有要显示的数据。该组件看起来像这样(大大简化了):

*ngIf

使用这样的模板:

@Component({...})
export class AuthenticatedHeaderComponent {
  public hasAnalytics$: Observable<boolean> = this.analyticsQuery.hasAnalytics$;
  public hasAccess(controlName: string): boolean {
    return true;
  }

  constructor(private readonly analyticsQuery: AnalyticsQuery) {}
}

当我编译,进行单元测试并在本地运行它时,一切都正常。但是,当我将其编译用于生产时,出现以下错误:

<div *ngIf="hasAccess('analytics') && hasAnalytics$ | async">
  <a routerLink="/analytics">Analytics</a>
</div>

生产还包括AoT步骤。

尽管错误表明存在承诺,但表达式中没有承诺。这使消息相当混乱。错误所指向的字符是ERROR in src/app/core/appHeader/authenticatedHeader.component.html(42,9): Argument of type 'false | Observable<boolean>' is not assignable to parameter of type 'Promise<any> | null | undefined'. Type 'false' is not assignable to type 'Promise<any> | null | undefined'. 的开始-也许它与该指令有关?什么会解决此AoT编译错误?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)