Как предотвратить перезагрузку страницы/скроллинг в самый верх при клике на routerLink

У меня есть проект интернет-магазина на Angular, при клике на routerLink происходит переход на другой элемент роутера, при этом у меня присутствует анимация перехода. Данную анимацию увидеть невозможно, так как страничка сразу прокручивается наверх или перезагружается. Если нажать кнопку "назад" в браузере - анимацию видно. Как предотвратить данное поведение? Итак, что я пробовал: добавлять опцию

{ scrollPositionRestoration: 'disabled' } --- не помогает

Вот такой скрипт в конструктор

  router.events
  .pipe(filter((e: Event): e is Scroll => e instanceof Scroll))
  .subscribe((e) => {
    if (e.position) {
      // backward navigation
      viewportScroller.scrollToPosition(e.position);
    } else if (e.anchor) {
      // anchor navigation
      viewportScroller.scrollToAnchor(e.anchor);
    } else {
      // forward navigation
      viewportScroller.scrollToPosition([0, 0]);
    }
  });

// не помогает

Вот код моего раутера

const routes: Routes = [
  { path: '', redirectTo: '/products', pathMatch: 'full' },
  {
    path: 'products',
    component: ProductsComponent,
    data: { animation: 'isLeft' },
  },
  {
    path: 'shopping-cart',
    component: ShoppingCartComponent,
    data: { animation: 'isRight' },
  },
];

@NgModule({
  imports: [
    RouterModule.forRoot(routes, { scrollPositionRestoration: 'disabled' }),
  ],
  exports: [RouterModule],
})

Вот код оутлета

<main [@routeAnimations]="prepareRoute(outlet)" class="content">
  <router-outlet #outlet="outlet"></router-outlet>
</main>

Код айтема

<article class="product">
  <div class="img-container">
    <img src="{{ product.image }}" alt="product" class="product-img" />
    <button
      class="bag-btn"
      data-id="{{ product.id }}"
      routerLink="/shopping-cart"
      (click)="addItem(product.id)"
    >
      <i class="fas fa-shopping-cart"></i>
      Add to bag
    </button>
  </div>
  <h3>{{ product.name }}</h3>
  <h4>Price: ${{ product.price }}</h4>
  <p>{{ product.label }}</p>
</article>

Почему так происходит? Как предотвратить данное поведение? Как сделать так, чтобы при переходе на другой линк вся страница не перезагружалась, а окно прокрутки оставалось на том же месте?


Ответы (0 шт):