Угловое универсальное мерцание (загрузка дважды) после выполнения всех шагов, а также с использованием TransferState в перехватчике - PullRequest
0 голосов
/ 08 января 2019

Я использую Angular universal после создания различных модулей и перехватчиков для обработки запросов к серверу и браузеру, но домашняя страница по-прежнему загружается дважды. Как избежать этого мерцания. Вот код, который я использовал в перехватчике


Auth-interceptor.ts

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (request.method !== 'GET') {
  return next.handle(request);
}

const key: StateKey<string> = makeStateKey<string>(request.url);

if (isPlatformServer(this.platformId)) {

    return next.handle(request).pipe(tap((event) => {
      this.transferState.set(makeStateKey(request.url), (<HttpResponse<any>> event).body);
    }));
} else {
    const storedResponse: string = this.transferState.get(makeStateKey(request.url), null);
  if (storedResponse) {
    const response = new HttpResponse({body: storedResponse, status: 200});
    this.transferState.remove(key);
    return of(response);
   } else {
    return next.handle(request);
  }
 }
}

main.ts

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
  if(window){
  window.console.log = function(){};
 }
}
  document.addEventListener('DOMContentLoaded', () => {
   platformBrowserDynamic().bootstrapModule(AppModule)
    .catch(err => console.log(err));
 });
...