angular2 http 拦截器和注入 SlimLoadingBarService 不起作用?
angular2 http interceptor and inject SlimLoadingBarService does not work?
我写了一个http拦截器,是这样的:
import { Injectable, Inject } from '@angular/core';
import { SlimLoadingBarService } from 'ng2-slim-loading-bar';
// ... other imports in here
@Injectable()
export class HttpInterceptorService extends Http {
private apiEndpoint: string;
constructor(
@Inject(CONFIG_TOKEN) config: Config,
private backend: ConnectionBackend,
private defaultOptions: RequestOptions,
private slimLoadingBarService: SlimLoadingBarService
) {
super(backend, defaultOptions);
this.apiEndpoint = config.apiEndpoint;
}
get(url: string, options?: RequestOptionsArgs): Observable<any> {
this.beforeRequest();
return super.get(this.getFullUrl(url), this.requestOptions(options))
// ...
}
private beforeRequest(): void {
// this is not work
this.slimLoadingBarService.start();
}
// ... other methods
}
我的 app.module 提供这样的配置:
{
provide: HttpInterceptorService,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => {
return new HttpInterceptorService(CONFIG, backend,
defaultOptions, new SlimLoadingBarService);
},
deps: [XHRBackend, RequestOptions]
}
现在,这个 Http 拦截器是工作的,但是 SlimLoadingBarService
不工作。
我感觉应该是传错了new SlimLoadingBarService
导致,但是直接传SlimLoadingBarService
,同样会报错,现在卡在这个地方不知道怎么继续了。
没有错误信息,但是没有显示loadingbar(SlimLoadingBarService
)。
试试这个。
{
provide: HttpInterceptorService,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, slimLoadingBarService: SlimLoadingBarService) => {
return new HttpInterceptorService(CONFIG, backend,
defaultOptions, slimLoadingBarService);
},
deps: [XHRBackend, RequestOptions, SlimLoadingBarService]
}
我写了一个http拦截器,是这样的:
import { Injectable, Inject } from '@angular/core';
import { SlimLoadingBarService } from 'ng2-slim-loading-bar';
// ... other imports in here
@Injectable()
export class HttpInterceptorService extends Http {
private apiEndpoint: string;
constructor(
@Inject(CONFIG_TOKEN) config: Config,
private backend: ConnectionBackend,
private defaultOptions: RequestOptions,
private slimLoadingBarService: SlimLoadingBarService
) {
super(backend, defaultOptions);
this.apiEndpoint = config.apiEndpoint;
}
get(url: string, options?: RequestOptionsArgs): Observable<any> {
this.beforeRequest();
return super.get(this.getFullUrl(url), this.requestOptions(options))
// ...
}
private beforeRequest(): void {
// this is not work
this.slimLoadingBarService.start();
}
// ... other methods
}
我的 app.module 提供这样的配置:
{
provide: HttpInterceptorService,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => {
return new HttpInterceptorService(CONFIG, backend,
defaultOptions, new SlimLoadingBarService);
},
deps: [XHRBackend, RequestOptions]
}
现在,这个 Http 拦截器是工作的,但是 SlimLoadingBarService
不工作。
我感觉应该是传错了new SlimLoadingBarService
导致,但是直接传SlimLoadingBarService
,同样会报错,现在卡在这个地方不知道怎么继续了。
没有错误信息,但是没有显示loadingbar(SlimLoadingBarService
)。
试试这个。
{
provide: HttpInterceptorService,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, slimLoadingBarService: SlimLoadingBarService) => {
return new HttpInterceptorService(CONFIG, backend,
defaultOptions, slimLoadingBarService);
},
deps: [XHRBackend, RequestOptions, SlimLoadingBarService]
}