我不知道我是否遗漏了一些东西,但注入自定义baserequestoptions类的构造函数在Beta 17中对我来说很好,但在转移到RC1后,这种方法似乎不再起作用了。
我创建了一个plunkr来说明webapibaseurl现在是未定义的(相同的代码方法,但Beta 17引用有效):
https://embed.plnkr.co/usOljRDLap9RlLd3RIBd/
有什么想法吗?
答案 0 :(得分:4)
从RequestOptions
而不是BaseRequestOptions
延伸,使其对我有用
@Injectable()
export class AppRequestOptions extends RequestOptions {
constructor(@Inject('webApiBaseUrl') private webApiBaseUrl:string) {
super({method: RequestMethod.Get, headers: new Headers()});
console.log('webApiBaseUrl', webApiBaseUrl);
}
merge(options?:RequestOptionsArgs):RequestOptions {
options.url = this.webApiBaseUrl + options.url;
console.log('merge - options.url = '+options.url);
return super.merge(options);
}
}
否则由于某些未知原因注入@Inject('webApiBaseUrl') private webApiBaseUrl:string
无效。
答案 1 :(得分:0)
这对我来说仍然有用。这是我使用的自定义选项类:
import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from '@angular/http';
export class AppRequestOptions extends BaseRequestOptions {
constructor() {
}
merge(options?:RequestOptionsArgs):RequestOptions {
options.url = 'https://www.test.org' + options.url;
return super.merge(options);
}
}
我以这种方式注册:
bootstrap(App, [
HTTP_PROVIDERS,
provide(RequestOptions, {useClass: AppRequestOptions})
]);
请参阅此plunkr:https://plnkr.co/edit/MK30JR2qK8aJIGwNqMZ5?p=preview。
修改强>
似乎在这种类的依赖注入级别存在问题。我提出了一个问题:https://github.com/angular/angular/issues/8925。