Я использую представление Master-Detail, где я перехожу к деталям (дочернему маршруту) при выборе в главном списке. Я пытаюсь сохранить свою позицию прокрутки в главном списке, когда я возвращаюсь от подробного вида к главному списку.
Я пытался использовать
RouterModule.forRoot([{path: '', redirectTo: 'home', pathMatch: 'full'}], {scrollPositionRestoration: 'enabled'}),
в моем модуле маршрутизации приложений. без успеха.
Я думал, что это не работает, потому что прокрутка может сработать, прежде чем мой контент списка будет загружен успешно, поэтому я попробовал другой подход. В моем компоненте списка, где мой контент инициализируется, я добавил эту логику c:
this.router.events.pipe(
filter(event => event instanceof Scroll),
).subscribe(event => {
const scrollEvent = event as Scroll;
of(scrollEvent).pipe(delay(1)).subscribe(scroll => {
if (scroll.position) {
this.viewportScroller.scrollToPosition(scroll.position);
} else {
this.viewportScroller.scrollToPosition([0, 0]);
}
})
})
Теперь это работает, когда я перехожу к подробному виду и нажимаю кнопку "Назад". Однако это не работает, когда я использую встроенную навигацию назад в компоненте детализации, используя маршрутизатор в качестве scroll.position, всегда будет нулевым:
this.router.navigate(['../'], {relativeTo: this.route});
Любая помощь приветствуется!