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

Pat*_*ick 2 firebase ionic-framework angular angular-library

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

离子 v.5.0.5

角度 v.9.0.6

也许有人有想法。

谢谢你的帮助!

Pat*_*ick 8

就在问这个问题后,我以某种方式在帖子底部找到了答案,建议添加

"paths": { "@angular/*": [ "./node_modules/@angular/*" ] }
Run Code Online (Sandbox Code Playgroud)

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


tit*_*sfx 6

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

  1. 在您的应用程序中,angular.jsonpreserveSymlinks: true.projects.$name.architect.build.options

  2. @Patrick 解决方案(我不推荐):

    "paths": { "@angular/*": [ "./node_modules/@angular/*" ] }
    
    Run Code Online (Sandbox Code Playgroud)

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