Как мы можем проверить isPlatformBrowser (this.platformId) в app.module и рендеринг SSR - PullRequest
0 голосов
/ 03 мая 2020

Я использую рендеринг ssr, и у меня проблема с использованием окна и его значений в моем приложении. Теперь я могу получить свойство окна, используя следующий код:

@Inject(PLATFORM_ID) private platformId: Object) {
    if (isPlatformBrowser(this.platformId)) {
         console.log(window.appConfig.apiBaseUrl)
      // this.apiBaseUrl = window.appConfig.apiBaseUrl;
    }
}

Мой вопрос заключается в том, как я могу получить доступ к window.appConfig.apiBaseUrl в приведенном ниже коде, который, в свою очередь, конфигурации RestangularConfigFactory:

export function RestangularConfigFactory(RestangularProvider) {
  // TODO - change default config

  RestangularProvider.setBaseUrl(window.appConfig.apiProxy);
  RestangularProvider.addFullRequestInterceptor((element, operation, path, url, headers, params) => {
    // Auto add token to header
    headers.Authorization = 'Bearer ' + localStorage.getItem('accessToken');
    headers.platform = window.appConfig.platform;
    return {
      headers: headers
    };
  });

  RestangularProvider.addErrorInterceptor((response, subject, responseHandler) => {
    // force logout and relogin
    if (response.status === 401) {
      localStorage.removeItem('accessToken');
      localStorage.removeItem('isLoggedin');
      window.location.href = '/auth/login';

      return false; // error handled
    }

    return true; // error not handled
  });
}

1 Ответ

1 голос
/ 04 мая 2020

Я думаю, что вы должны создать сервис и внедрить ID платформы в сервисе. У меня это сработало.

...