Angular2 RC BaseRequestOption构造函数注入
问题描述:
我不知道我是否缺少一些东西,但注入一个自定义baserequestoptions类的构造函数在Beta 17中对我来说工作正常,但在移动到RC1后,此方法似乎不再适用。Angular2 RC BaseRequestOption构造函数注入
我创建了一个plunkr以表明webapibaseurl现在来通过为未定义(相同的代码的方法,但有Beta版17所引用工作):
https://embed.plnkr.co/usOljRDLap9RlLd3RIBd/
任何想法?
答
这仍然适用于我。这是自定义的选项类我用:
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。
答
从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
没有工作。
感谢您回复我。选项类本身很好,并且对请求起作用,但是对于我来说关键的一点是要为'undefined'注入'webApiBaseUrl'(或者其他任何其他的东西)。 – Monkeeman69
@ Monkeeman69 Wouah,你完全正确。看起来,依赖注入对扩展'BaseRequestOptions'的类不起作用...而注入('webApiBaseUrl')可能在其他地方。我认为这是一个错误/回归。我会为此打开一个错误。 –
这是我打开的问题:https://github.com/angular/angular/issues/8925。 –