Я занят бесконечной прокруткой и нашел 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();
}
}