【问题标题】:Ionic 2 / Angular 2 providers cannot be resolvedIonic 2 / Angular 2 提供程序无法解析
【发布时间】:2017-03-17 18:01:19
【问题描述】:

我使用的是 Ionic 2,但自 2.0.0 版以来,提供程序/注入存在一些问题。 我不断收到的错误如下(使用不同的提供者,而不仅仅是这个):

未捕获的错误: 无法解析 LoginRedirectService 的所有参数:(App, ?, AlertController)。

解决我的提供程序的注入似乎存在问题,即使它们都用@Injectable 装饰。

一个文件

@Injectable()
export class LoginRedirectService {

    constructor(
        public app:App, 
        //another provider, needed within this one - this cannot be resolved
        public authService: AuthenticationService,
        public alert:AlertController
    )
//...
}

不同的文件

@Injectable()
export class AuthenticationService {
    constructor(public dataService:DataService){
        //...
    }
}

//...

等等。

我还在 app.module.ts 中添加了所有提供程序,按照它们必须注入的顺序:

//Ordered by dependencies, bottom is the most dependent on others
providers: [
    HttpModule,
    JsonpModule,
    RssService,
    EmergencyEmailService,
    InAppBrowserService,
    ExternalBrowser,
    AppLauncherService,
    LauncherPlaner,
    LauncherSkype,
    ConnectivityService,
    MockRemoteDataService,
    SoniaMirthRemoteDataService,
    DataService,
    AuthenticationService,
    LoginRedirectService,
    NewsStreamService,
    SoniaBootstrapService
]

我的项目结构如下:

    • 应用程序
      • app.module.ts
      • app.component.ts
    • 资产
    • 供应商
      • 子文件夹
    • ...
  • package.json 等

我尝试在需要它们的类的构造函数中显式调用@Inject,但也没有成功。

我真的不知道该怎么做,感谢任何帮助,谢谢

【问题讨论】:

  • AuthenticationServiceDataService 是否依赖于 HttpHttpModuleJsonpModule 应该进入 @NgModule.imports 而不是 providers。如果您在imports 中还没有它,并且服务 依赖于Http,那 导致此错误
  • 谢谢,我确实从那里删除了它们,但它们已经添加到导入中,但并没有解决问题。
  • 我遇到了同样的问题。在我的情况下,一个提供者正在导入另一个,尽管这似乎不是这里的情况。只是我的两分钱,以防其他人像我一样在这里碰到:)

标签: angular typescript ionic-framework ionic2 angular2-providers


【解决方案1】:

模块不是它们驻留在导入中的提供者。试试上面由@peeskillet 给出的

【讨论】:

  • 已修复,谢谢,但仍然出现相同的错误。
  • 没有任何参数是否有效?比如构造函数中没有注入器
  • 是的,没有“?”参数它正在工作,但服务当然没用
猜你喜欢
  • 1970-01-01
  • 2017-08-12
  • 2017-05-13
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多