В настоящее время я занимаюсь разработкой поиска с одним представлением документов. Я получил список со всеми идентификаторами документов, совпадающими с моим запросом (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;
}
}