#html #angular
#HTML #угловой
Вопрос:
Я пытаюсь создать меню навигации, в котором элементы меню позволяют перейти к определенной карточке на странице. Это работает нормально, когда пользователь находится именно на этой странице. Но я также хочу, чтобы он работал, когда пользователя нет на этой странице. Я попытался сначала перейти на правильную страницу, а затем прокрутить просмотр конкретной карты. Но это дает мне ошибку типа. Если я нажму на него во второй раз, он будет прокручиваться просто отлично.
Это код, который я использую для прокрутки в нужную карту:
//sroll to calendar
async calendar() {
this._router.navigate(["/Home"]);
const elmntToView = document.getElementById("Calendar");
elmntToView.scrollIntoView({behavior: 'smooth'});
this.toggleHidden()
}
//scroll to export
export() {
this._router.navigate(["/Home"]);
let elmntToView;
elmntToView = document.getElementById("Export");
elmntToView.scrollIntoView({behavior: 'smooth'});
this.toggleHidden()
}
Сначала я перехожу на правильную страницу (Home), а затем вызываю метод document.getElementById(), но это выдает мне ошибку:
Есть ли какой-нибудь способ это исправить? Мне кажется, что docment.getElementById() вызывается до завершения навигации, но я также пытался дождаться навигации, но это по-прежнему вызывает ту же проблему…
Комментарии:
1. scrollIntoView не будет выполнен, поскольку вы сначала выполнили перенаправление, а те блоки кода после него не будут выполнены.
2. Если эта проблема
getElementById()
вызывается до завершения навигации, вы можете использоватьngAfterViewInit()
или в своемheader.component.html
шаблоне, где вы можете использовать это свойство / вызов метода*ngIf
. если вы поделитесьstackblitz
, это будет полезно исправить.