Сервис не работает при обновлении Angular 4 до 7 - PullRequest
0 голосов
/ 20 мая 2019

Я обновил свое угловое приложение с 4 до последней версии 7. После стольких ошибок я наконец-то заставил его работать, но теперь есть одна проблема: сервисы не работают, как будто они не выдают никаких ошибок в консоли, но неработает также.

Я думаю, что проблема с моим перехватчиком Http и фабрикой, в которой я что-то упускаю.

Может кто-нибудь сказать мне, в чем проблема, точно?

Http-перехватчик

  constructor(
    backend: HttpBackend,
    private store: Store<any>,
    private spinnerService: SpinnerService
  ) {
    super(backend);
  }

  request( url: string | HttpRequest<any>, options?: any): Observable<any> {
    this.showLoader();
    return this.tryCatch(super.request(this.getRequestOptionArgs(options)))
  }

  get(url: string, options?: any): Observable<any> {
    url = this.updateUrl(url);
    return this.tryCatch(super.get(url));
  }

  post(url: string, body: string, options?: any): Observable<any> {
    url = this.updateUrl(url);
    return this.tryCatch(
      super.post(url, body)
    );
  }

  put(url: string, body: string, options?: any): Observable<any> {
    url = this.updateUrl(url);
    return this.tryCatch(
      super.put(url, body)
    );
  }

  delete(url: string, options?: any): Observable<any> {
    url = this.updateUrl(url);
    return this.tryCatch(super.delete(url));
  }

  patch(url: string, body: any, options?: any): Observable<any> {
    url = this.updateUrl(url);
    return this.tryCatch(
      super.patch(url, body)
    );
  }

  private updateUrl(req: string) {
    return environment.origin + req;
  }

  private getRequestOptionArgs(options?: any): any {
    if (options.headers == null) {
      options.headers = new HttpHeaders();
    }
    options.headers.append('Content-Type', 'application/json');
    options.headers.append(
      'Authorization',
      ` Bearer ${sessionStorage.AccessToken}`
    );

    return options;
  }

  private tryCatch(obs: Observable<any>) {
    return obs.pipe(catchError((error: HttpResponse<any>, caught) => {
      if (error.status === 401 && sessionStorage.AccessToken) {
        sessionStorage.clear();
        this.store.dispatch({type: 'LOGOUT'});
      }
      this.hideLoader();
      return observableThrowError(error);
    }));
  }

Http factory

export function httpFactory(xhrBackend: HttpXhrBackend, store: Store<any>, spinnerService: SpinnerService): HttpClient {
  return new InterceptedHttp(xhrBackend, store, spinnerService);
}

провайдер в модуле приложения

 {
   provide: HttpClient,
   useFactory: httpFactory,
   deps: [HttpXhrBackend, Store, SpinnerService]
 },

Всякий раз, когда я вхожу в систему, он просто начинает загрузку, ничего больше, никаких ошибок или чего-то еще, и когда я комментирую провайдера в модуле приложения, он говорит: «404 not found error».

Любая помощь?

Спасибо

1 Ответ

0 голосов
/ 20 мая 2019

Между этими версиями произошли некоторые изменения, они не потребуют особого труда, я тоже там был.

Вот помощник, выберите исходную версию и пункт назначения, вы получите пошаговое руководство по необходимым изменениям.

update.angular.io

...