【发布时间】:2025-12-20 18:45:16
【问题描述】:
我最近正在处理的项目升级到 AOT 合规性,自从那件事发生后,我在 HTML 中使用 | async 管道时遇到了问题。例如,我的 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,但这似乎也不起作用。声明 observable 的方式,看起来像
public mySubscription$: Observable<string> = null;
同样,所有这些问题都是在启用 AOT 和 IVY 之后开始的。
现在,经过进一步调查,我认为我确信CommonModule 在应用程序中的加载方式存在一些问题,如下所述:The pipe 'async' could not be found
但是我在我的 App.Module、我的路由模块和我的功能模块中引用了 Common 模块。我还在应用程序中发现其他组件正在加载公共模块并使用| async 但听起来只有我的组件有问题。
另外,我注意到的另一件事是我的应用程序第一次加载良好,总是重新编译导致模块加载问题。现在我不确定第一次编译和重新编译之间有什么区别,可能是加载模块的顺序吗?但在这一点上,我不确定是什么原因造成的?
【问题讨论】:
-
这能回答你的问题吗? The pipe 'async' could not be found
-
是的,我都试过了。需要明确的是,在 AOT 更新之前,我的代码最长没有问题。所以我认为这与 AOT 更新有关。
-
能否请您尝试删除空检查?
-
删除了,还是一样的问题。
-
作为“升级到 aot 合规性”的一部分,您到底做了什么?
标签: angular aot angular-aot async-pipe