Angular2 RC BaseRequestOption Constructor Injection

后端 未结 2 1931
闹比i
闹比i 2021-01-21 20:52

I don’t know whether I am missing something but injecting the constructor of a custom baserequestoptions class was working fine for me in Beta 17 but after moving to RC1 this ap

相关标签:
2条回答
  • 2021-01-21 21:09

    This still works for me. Here is the custom option class I used:

    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);
      }
    }
    

    and I register it this way:

    bootstrap(App, [
      HTTP_PROVIDERS,
      provide(RequestOptions, {useClass: AppRequestOptions})
    ]);
    

    See this plunkr: https://plnkr.co/edit/MK30JR2qK8aJIGwNqMZ5?p=preview.

    Edit

    It seems that there is a problem at the level of dependency injection for such class. I opened an issue: https://github.com/angular/angular/issues/8925.

    0 讨论(0)
  • 2021-01-21 21:25

    Extending from RequestOptions instead of from BaseRequestOptions made it work for me

    @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);
      }
    }
    

    otherwise for some unknown reason injecting @Inject('webApiBaseUrl') private webApiBaseUrl:string didn't work.

    Plunker example

    0 讨论(0)
提交回复
热议问题