Angular2 RC BaseRequestOption构造函数注入

时间:2016-05-31 15:17:55

标签: dependency-injection constructor angular

我不知道我是否遗漏了一些东西,但注入自定义baserequestoptions类的构造函数在Beta 17中对我来说很好,但在转移到RC1后,这种方法似乎不再起作用了。

我创建了一个plunkr来说明webapibaseurl现在是未定义的(相同的代码方法,但Beta 17引用有效):

https://embed.plnkr.co/usOljRDLap9RlLd3RIBd/

有什么想法吗?

2 个答案:

答案 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无效。

Plunker example

答案 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