Dependency injection Angular2 RC BaseRequestOption构造函数注入
我不知道我是否遗漏了什么,但是在Beta 17中注入自定义baserequestoptions类的构造函数对我来说很好,但是在转移到RC1之后,这种方法似乎不再有效 我创建了一个plunkr来说明webapibaseurl现在是未定义的(与代码方法相同,但Beta 17引用有效):Dependency injection Angular2 RC BaseRequestOption构造函数注入,dependency-injection,constructor,angular,Dependency Injection,Constructor,Angular,我不知道我是否遗漏了什么,但是在Beta 17中注入自定义baserequestoptions类的构造函数对我来说很好,但是在转移到RC1之后,这种方法似乎不再有效 我创建了一个plunkr来说明webapibaseurl现在是未定义的(与代码方法相同,但Beta 17引用有效): 有什么想法吗?这对我来说仍然有效。以下是我使用的自定义选项类: import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from '@angu
有什么想法吗?这对我来说仍然有效。以下是我使用的自定义选项类:
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})
]);
请参阅以下链接:
编辑
对于这样的类,似乎在依赖项注入级别存在问题。我打开了一个问题:.从
RequestOptions
扩展而不是从BaseRequestOptions
使它适合我
@Injectable()
导出类AppRequestOptions扩展了RequestOptions{
构造函数(@Inject('webApiBaseUrl')私有webApiBaseUrl:string){
super({method:RequestMethod.Get,headers:newheaders()});
log('webApiBaseUrl',webApiBaseUrl);
}
合并(选项?:请求选项参数):请求选项{
options.url=this.webApiBaseUrl+options.url;
log('merge-options.url='+options.url);
返回super.merge(选项);
}
}
否则,由于未知原因,注入@Inject('webApiBaseUrl')私有webApiBaseUrl:string
无法工作
谢谢你回复我。options类本身很好,可以处理请求,但对我来说,关键是尝试注入“webApiBaseUrl”(或其他类似的东西),它被认为是“未定义的”。@Monkeeman69-Wouah,你完全正确。依赖项注入似乎不适用于扩展
BaseRequestOptions
one的类。。。而(webApiBaseUrl的webApiBaseUrl
)的注入可以在其他地方进行。我认为这是一个错误/倒退。我会为此打开一个bug。