javascript - angular2 http拦截器和注入(inject)SlimLoadingBarService不起作用?

标签 javascript angular typescript angular2-services es6-class

我写了一个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]
}

关于javascript - angular2 http拦截器和注入(inject)SlimLoadingBarService不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43409060/

相关文章:

javascript - Jquery 工具提示不适用于文本/模板

typescript - 为什么 TypeScript 会提示数组长度?

javascript - 如何区分 typescript 索引签名和 JS 计算属性名称

javascript - 如何覆盖类中的 set 方法以使用 array.push?

javascript - React 不会在 map 函数中渲染

javascript - XML 到 jQuery 到字符串?

javascript - 如何从 Angular 4 中的字符串中删除 html 编码?

angular - Angular2中路由器的延迟

Angular Web Worker 应用程序不显示

node.js - 类型检查字符串而不是使用 instanceof