top route restoration recargar pasar otro hermanos example enviar entre down datos comunicacion componentes componente change angular typescript scroll routes

restoration - scroll to top on route change angular 4



¿Cómo suavizar el desplazamiento al anclaje de página en angular 4 sin complementos correctamente? (7)

Solución solo CSS

html { scroll-behavior: smooth; }

Funciona incluso después de la navegación o la recarga de la página.

Tenga en cuenta que no funciona en IE, Edge o Safari.

Lo que quiero lograr es hacer clic y hacer un desplazamiento suave al área div inferior / especificada que defino con el hashtag tal como creo que debería ser así.

Aquí está el ejemplo en vivo en el ejemplo de w3school que está escrito para JQuery: https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_eff_animate_smoothscroll

Lo que hago es echar un vistazo a esta respuesta: Enrutamiento Angular2 con Hashtag para anclaje de página

pero realmente no entiendo la respuesta, la respuesta se ve así:

esta parte es parte HTML:

<a [routerLink]="[''somepath'']" fragment="Test">Jump to ''Test'' anchor </a>

y debajo de esto, el router.navigate es ¿dónde debo poner el código? componente.ts ¿verdad? pero ¿cómo accedo a esta función? ¿Debo implementar (clic)?

this._router.navigate( [''/somepath'', id ], {fragment: ''test''});

y debajo de esto, lo entiendo, que debería escribir en mi component.ts:

** Add Below code to your component to scroll** import {ActivatedRoute} from ''@angular/router''; // <-- do not forget to import private fragment: string; constructor(private route: ActivatedRoute { } ngOnInit() { this.route.fragment.subscribe(fragment => { this.fragment = fragment; }); } ngAfterViewInit(): void { try { document.querySelector(''#'' + this.fragment).scrollIntoView(); } catch (e) { } }

¿Qué significa el "somepath"? Debo agregar una ruta en mi route.ts ¿verdad? por lo general, agrego una nueva ruta aquí, por ejemplo, así:

export const routes: Routes = [ { path: '''', redirectTo: ''/home'', pathMatch: ''full'' }, { path: ''product'', redirectTo: ''/product'' }, ...homeRoutes, ...productRoutes ];

¿Alguien puede proporcionarme un código de ejemplo completo en HTML, rutas y componentes?


Acabo de usar ngx-page-scroll . Puede ser tan simple como:

<a class="nav-link nav-item-text" pageScroll href="#categories">Categorias</a> .... <section id="categories">

Visite la página del paquete para obtener más información: ngx-page-scroll

También proporciona mecanismos para configurar el proceso de desplazamiento o implementar un comportamiento personalizado a través de un servicio que controla el desplazamiento desde el controlador del componente.


Estaba buscando una solución similar e intenté usar el ngx-scroll-to y descubrí que no funciona en la última versión de angular (angular 6+), así que decidí buscar otra opción y encontré una solución que usa el navegador native scrollIntoView y esta parece ser la mejor solución hasta ahora

Código HTML :

<button (click)="scrollToElement(target)"></button> <div #target>Your target</div>

Código Ts:

scrollToElement($element): void { console.log($element); $element.scrollIntoView({behavior: "smooth", block: "start", inline: "nearest"}); }


Intente quitar los corchetes:

class="startScroll" scrollTo="''#firstDiv''" scrollBoxID="''#scrollBox''"


Primero de crear directiva de desplazamiento

import { Directive, HostListener, Input, OnInit } from ''@angular/core''; declare var $: any; @Directive({ selector: ''[scrollTo]'' }) export class ScrollToDirective implements OnInit { @Input(''scrollTo'') scrollTo: string; @Input(''scrollBoxID'') scrollBoxID: string; constructor() { } ngOnInit(): void { } @HostListener(''mousedown'') onMouseClick() { var id = this.scrollTo; var scrollBoxID = this.scrollBoxID; var elementOffset = $(scrollBoxID).offset().top + 10; $(scrollBoxID).animate({ scrollTop: $(scrollBoxID).scrollTop() + ($(id).offset().top - elementOffset) }, 1000); } }

Aquí tu código html

<li> <label class="startScroll" [scrollTo]="''#firstDiv''" [scrollBoxID]="''#scrollBox''"> First </label> </li> <li> <label class="startScroll" [scrollTo]="''#secondDiv''" [scrollBoxID]="''#scrollBox''"> Second </label> </li> <div id="scrollBox"> <div class="first" id="firstDiv"></div> <div class="second" id="secondDiv"></div> </div>


Simplemente puede hacer esto en su componente.

const element = document.querySelector("#destination") if (element) element.scrollIntoView({ behavior: ''smooth'', block: ''start'' })

Ref: native


por lo que leo y lo que busco, será un código increíble para un SMOOTH SCROLL, no es simplemente como JQuery, creo, así que decidí usar estos complementos que funcionan perfectamente: ngx-scroll-to

Sientase libre de usarlo