我在这里关注这个How do I set default Http Headers for all requests in Ionic 2?Ionic2默认http标题
这工作正常,并在所有http调用它通过我把标题。 但我的问题是,当我注入任何服务到这个MyRequestOptions构造函数这个服务是undefined,并且不能使用它...
任何人都知道为什么?我需要在这里注入我的自定义AuthService以将JWT令牌。
我在这里关注这个How do I set default Http Headers for all requests in Ionic 2?Ionic2默认http标题
这工作正常,并在所有http调用它通过我把标题。 但我的问题是,当我注入任何服务到这个MyRequestOptions构造函数这个服务是undefined,并且不能使用它...
任何人都知道为什么?我需要在这里注入我的自定义AuthService以将JWT令牌。
这是因为BaseReqestOptions
使用@Injectable
,这种情况下调用BaseRequestOptions
构造函数而不是您的子类构造函数。所以,你既可以:
使用工厂
providers: [{
provide: RequestOptions,
deps: [ Config ],
useFactory: (config: Config) => {
return new DefaultRequestOptions(config);
}
}]
这将允许你自己创建的服务,而角试图注入它。或者你可以
扩展RequestOptions
代替
@Injectable()
class DefaultRequestOptions extends RequestOptions {
constructor(public config: Config) {
super({method: RequestMethod.Get, headers: new Headers()})
this.headers.append('data', this.config.data);
}
}
RequestOptions
不饰@Injectable
。如果你看看the source code for BaseRequestOptions,你会发现它所做的与我们上面做的是一样的(使用super
调用)。
我需要在这里注入我的自定义AuthService也把JWT令牌
你需要的,如果AuthService
被注入Http
要小心这一点。你可能会得到一个循环依赖错误(因为Http
使用RequestOptions
和你RequestOptions
需要Http
)。处理这种情况的一种方法是将Injector
,而不是Http
注入服务。然后从Injector
只需get
Http
。