我们如何在app.module和SSR渲染中检查isPlatformBrowser(this.platformId)。

问题描述 投票:0回答:1

我正在使用ssr渲染,在我的应用程序中使用window和它的值时遇到了一个问题,现在我可以使用下面的代码获得window的属性。

@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
  });
}
angular window server-side-rendering angular-universal
1个回答
1
投票

我认为你应该创建一个服务,并在服务中注入platformId。这对我来说是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.