在angular2中注入提供者

时间:2016-06-02 16:29:46

标签: angular

按照这里的教程:

https://auth0.com/blog/2016/02/18/ionic-2-authentication-how-to-secure-your-mobile-app-with-jwt/

AuthHttp作为提供者注入的方式是:

@App({
  template: '<ion-nav [root]="rootPage"></ion-nav>',
  config: {},
  providers: [
    provide(AuthHttp, {
      useFactory: (http) => {
        return new AuthHttp(new AuthConfig, http);
      },
      deps: [Http]
    })
  ]
})

这似乎很安静。据我所知,提供商接受一系列提供商。

有没有更简单的方法来重写此代码?

2 个答案:

答案 0 :(得分:0)

如果AuthHttp有一个@Injectable()装饰器,那么这也可以正常工作

@App({
  template: '<ion-nav [root]="rootPage"></ion-nav>',
  config: {},
  providers: [HTTP_PROVIDERS, AuthConfig, AuthHttp]
})

答案 1 :(得分:0)

我认为您需要提供商提供的AuthConfig。如果它只是使用没有参数的构造函数,那么Günter的答案正是你要找的!

如果在实例化此类时需要指定参数,可以尝试以下操作:

@App({
  template: '<ion-nav [root]="rootPage"></ion-nav>',
  config: {},
  providers: [
    HTTP_PROVIDERS,
    provide(AuthConfig, { useValue: new AuthConfig(param1, ...) }),
    AuthHttp
  ]
})