在离子项目中使用 angular 库时,必须从注入上下文调用 inject()

inject() must be called from an injection context when using angular library in ionic project

我目前有一个项目,其中有一个 angular 工作区,我在其中创建了一个 angular 网络应用程序。现在我还需要一个应用程序并创建了一个 angular ionic 应用程序。我想重用我现有的使用 AngularFireauth 和 AngularFirestore 的身份验证服务,因此我创建了一个库并提取了该服务。在 angular 网络应用程序中使用库中的服务时,一切正常。但是尝试从离子应用程序在页面中注入服务我得到错误 inject() 必须从注入上下文中调用。将服务从库移动到离子应用程序并从那里使用它时它可以工作。

离子 v.5.0.5

Angular v.9.0.6

也许有人有想法。

感谢您的帮助!

刚问完这个问题,我就在 post 的底部找到了答案,建议添加

"paths": { "@angular/*": [ "./node_modules/@angular/*" ] }

到我试图注入服务的应用程序的 compilerOptions 下的 tsconfig.app.json。

就我而言,有两种解决方案对我有用:

  1. 在您的应用程序中,将 projects.$name.architect.build.options preserveSymlinks: true 添加到 angular.json 文件中 projects.$name.architect.build.options

  2. @Patrick Solution(不推荐):

    "paths": { "@angular/*": [ "./node_modules/@angular/*" ] }
    

最可能的解释是@angular/core 的两个不同副本被捆绑到该应用程序。: