Angular: следующий и предыдущий вид документа - PullRequest
0 голосов
/ 17 февраля 2020

В настоящее время я занимаюсь разработкой поиска с одним представлением документов. Я получил список со всеми идентификаторами документов, совпадающими с моим запросом (this.hits = ["809", "807", "812"])

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

Я сохранил все идентификаторы документов в queryStoreService

Один документ просматривается в DocumentViewComponent

DocumentView

export class DocumentViewComponent implements OnInit {

    hits: string[];
    prevItem: string;
    nextItem: string;

    constructor(
        private http: HttpService,
        private route: ActivatedRoute,
        private router: Router,
        private hitsStore: QuerystoreService,

      ) {}

    ngOnInit() {
        // current Document ID
        const id = this.route.snapshot.paramMap.get('id');


        // get all ids from querysearch
        this.hits = this.hitsStore.getAllHits();

            for (let i = 0; i < this.hits.length ; i++) {
                // check if current id is in array
                if ( this.hits[i] === id ) {
                this.nextItem = this.hits[i + 1];
                this.prevItem = this.hits[i - 1];
                }
             }



            // loading single Documentview
            this.http.documentById(id).subscribe(res => {
                .....
            })


      }


      prev() {
        window.open('/document/' + this.prevItem, '_self');
        window.location.reload();
      }

      next() {
        window.open('/suche#/document/' + this.nextItem , '_self');
        window.location.reload();
      }
}

QueryService

export class QuerystoreService {

  allObjects: string[] = [];
  allHits: any;

  private messageSource = new BehaviorSubject('keine Query');
  currentMessage = this.messageSource.asObservable();

  constructor() { }




  gettingHits(message: any) {
    const allObjects = [];
    message.hits.forEach((hit: string) => {
      allObjects.push(hit['_id']);
  });
    console.log(allObjects);
    this.allHits = allObjects;
    return this.allObjects;
  }


  public getAllHits(): any[] {
    return this.allHits;
  }



}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...