Бесконечная прокрутка: OnScroll сбрасывает значение переменной - PullRequest
0 голосов
/ 24 сентября 2018

Я занят бесконечной прокруткой и нашел ngx-infinite-scroll.Это работает так, как я хочу.У меня 1000 постов с тегами, и сначала показываются первые 50 постов.Когда я прокручиваю вниз, отображаются следующие 50 сообщений.Отлично!

Но, как я уже сказал, посты имеют теги.У меня есть список тегов, и когда я нажимаю на тег, запускается функция в компоненте, которая показывает сообщения.Он добавляет тег и показывает только сообщения с этим тегом.Также;идеально.

Но ... Когда я прокручиваю вниз до второй страницы, выбранные теги удаляются;массив, содержащий идентификаторы массивов, пуст, в то время как он заполняется перед функцией OnScroll.Я не могу понять, почему.

Вот что у меня сейчас:

import { Component, OnInit } from '@angular/core';
import { PostsService } from '@app/Services/posts.service';
import { PostSharingService } from '@app/Behaviors/PostSharingBehaviour';
import * as _ from 'lodash'
import { Post } from '@app/models/post';

@Component({
    selector: 'app-postings',
    templateUrl: './postings.component.html',
    styleUrls: ['./postings.component.css']
})
export class PostingsComponent implements OnInit {
    public reset: boolean = false;
    public postings: Post[];

    page: number;
    tags: string[];

    constructor(private postingService: PostsService, private postSharingService: PostSharingService) { }

    ngOnInit() {
        this.tags = [];
        this.postSharingService.posts.subscribe( value => {
            this.postings = value;
        });

        this.search();
      }

    public onScroll () {
        this.page = this.page + 1;
        this.search();
      }

    public search() {
        console.log(this.tags);
        this.postingService.getAllPosts(this.tags.join(","), 50, this.page).subscribe(response=>{   
            if(this.reset)
               this.postSharingService.posts.next(response);
            else
                this.postSharingService.posts.next(
                    _.concat(this.postSharingService.posts.getValue(), response));
        });
      }

      public addTag(tagId:string){
            if(!this.tags)
              this.tags = [];

            if(tagId == "0")
              this.tags = [];
            else
              this.tags.push(tagId);

        this.reset = true;
        this.search();
      }
    }
...