Угловой с универсальным отрисовывает страницу дважды - PullRequest
0 голосов
/ 02 октября 2019

Я использую угловой с универсальным, но страница загружается дважды, первая без данных API, а вторая уже загружает их

Кто-нибудь знает, как решить эту проблему?

Это способ, которым я делаю запросы к моему API

getPagination(event, red=false) {
        if(red){
            this.router.navigate(['/eventos/'+event]);
        }else{
            this.events = new Array();
            this.loading = true;
            this.p=event;
            //if (this.events.length < this.totalEvents) {
                const filter = "ordering=startDate&items=" + this.pageSize + "&page=" + event;
                let urlfilter = '';

                for (let filter in this.filters) {
                    if(this.filters[filter] != ''){
                        urlfilter += '&'+filter+'='+this.filters[filter];
                    }
                }
                this.api.getEvents(filter + urlfilter).subscribe(res =>{
                    this.totalEvents = res['count'];
                    this.events = res['results'];
                    this.loading = false;
                }, err=>{
                    this.loading = false;
                })
            //}
        }
    }

Это мой метод в службе API

 getEvents(where?: string): Observable<any> {
    where = (where) ? '?' + where : '';
    return this.http.get(this.apiUrl + `events/${where}`)
    .pipe(map(res =>  res), catchError(this.handleError));
  }

1 Ответ

0 голосов
/ 11 октября 2019

В зависимости от используемой версии, существуют разные способы использования TransferState API. Как только вы доберетесь до Angular 7, это станет довольно просто.

В AppModule импортируйте BrowserModule следующим образом:

HttpClientModule,
BrowserModule.withServerTransition({ appId: 'your-app-id' }),
BrowserTransferStateModule,

Если я правильно помню, я помню, что порядок может быть важным с HttpClientModule. Затем, когда вы выполняете HTTP-вызовы с помощью HttpClient, API-вызовы с сервера будут кэшироваться, а не переделываться в браузере.

...