我最近正在处理的项目升级到 AOT 合规性,自从那件事发生后,我| async
在 HTML 中使用管道时遇到了问题。例如,我的 HTML 代码如下所示:
<div *ngIf="(mySubscription$| async) !=null">
//some more html code
</div>
如您所见,这mySubscription$
是一个订阅,我只是想使用异步管道对其执行一个简单的操作。此代码一直在工作,但自从 AOT 更新后,它停止工作并引发以下错误:
ERROR Error: Uncaught (in promise): Error: The pipe 'async' could not be found!
我浏览了多个帖子,并且已经尝试commonModule
按照其他帖子中的建议添加到我的应用程序中,但到目前为止还没有运气。另外,我在这里从 Angular 官方网站上看到了这个文档:https ://angular.io/guide/template-typecheck但这似乎也不起作用。声明可观察的方式,看起来像
public mySubscription$: Observable<string> = null;
同样,所有这些问题都是在启用 AOT 和 IVY 之后开始的。
现在,经过进一步调查,我认为我确信CommonModule
在应用程序中加载的方式存在一些问题,如此处所述:找不到管道“异步”
但是我在我的 App.Module、我的路由模块和我的功能模块中引用了 Common 模块。我还在应用程序中找到了其他组件,其中加载并使用了通用模块,| async
但听起来只有我的组件有问题。
另外,我注意到的另一件事是我的应用程序第一次加载良好,总是重新编译导致模块加载问题。现在我不确定第一次编译和重新编译之间有什么区别,可能是加载模块的顺序吗?但在这一点上,我不确定是什么特别导致了它?