Autoscroll in Angular 2
Ich hab ein Problem mit Winkel 2, in dem der Wechsel von einer route zur anderen nicht automatisch Blättern Sie zu der Spitze der neuen Ansicht. Ich merke, dass Winkel-1 erlaubte eine autoscroll
Eigenschaft Hinzugefügt werden, um ein HTML-element, und andere hatten sich mit einigen einfachen javascript (wie window.scroll(0, 0)
) zu zwingen, Ansichten, Blättern Sie zu der Spitze, wenn es geladen wird.
Allerdings bin ich mir nicht sicher, wie dies zu erreichen mit Winkel-2. Weiß jemand, wie das zu erreichen ist?
InformationsquelleAutor der Frage Chris Ryan | 2016-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
update
Derzeit gibt es keine automatische Möglichkeit.
Siehe auch Winkel 2 Typoskript-Fehler bei Verwendung der subscribe-Funktion auf neuen router (rc 1)
Siehe auch https://github.com/angular/angular/issues/6595#issuecomment-244232725
update
In den neuen router V3-beta.2 können Sie ein fragment mit dem router verbindet und router navigation
es scrollen soll, sondern fügt auch
#top
auf die URL (selber noch nicht getestet)Update
Original
Es ist eine offene Frage, die für diese https://github.com/angular/angular/issues/6595
Einen workaround (erwähnt in https://github.com/angular/angular/issues/6946)
Spritzen Sie den router, abonnieren route ändert sich und ruft nach oben:
>= RC.x
beta
InformationsquelleAutor der Antwort Günter Zöchbauer
Hat können Sie hier sehen: https://angular.io/docs/ts/latest/api/router/index/Router-class.html#!#Veranstaltungen-Anker haben, müssen Sie auf "router.Veranstaltungen.abonnieren" - da Eckig 2.0.0
Also eine gute Lösung, um automatisch scrollen kannst, um die oben in der Seite ist eine AppComponent wie diese:
InformationsquelleAutor der Antwort Thierry
Neuere RCs (>= RC.3) scheinen nicht zu entlarven eine
changes
Beobachten, ist es wahrscheinlich, seitdem umbenannt in Veranstaltungen oder routerEvents.Ihre absolut "fantastisch" docs nicht scheinen, um alle Informationen auf, was macht was, also ich denke, du bist in für ein wenig Russisch-Roulette gibt. Oder eine Münze werfen oder sowas.
Vom diese Antwort, es scheint, die
events
Beobachtbaren Renditen Ereignisse in Bezug auf die navigation Zustand:InformationsquelleAutor der Antwort the_critic
Ich hatte das gleiche Problem. Basierend auf Gunter ' s Antwort fand ich, dass die Winkel s 2 RC.1 neuen router nicht aussetzen, eine Beobachtbare direkt. Stattdessen hat er eine
changes
- Eigenschaft für diesen Zweck. Die Problemumgehung für RC.1:InformationsquelleAutor der Antwort Federico Rodriguez
Habe ich verwendet, wenn(dies.router.navigiert) in der ngOnInit auf jeder Seite, um festzustellen, ob oder nicht zu verwenden-Fenster.scrollTo(0, 0). Diese decken die meisten Fälle, die das routing zu der Seite während dem scroll-position, wo es sein sollte, wenn Sie klicken Sie auf die Zurück-Schaltfläche Ihres Browsers.
InformationsquelleAutor der Antwort Shane
100% - Lösung getestet von mir:
InformationsquelleAutor der Antwort RohanArihant
Ich dies geschrieben, in der Problem threadaber ich poste es nochmal hier.
Mein team wurde mit was das Winkel-team nutzt auf dieser repo auf eckig.io. Machen Sie einfach eine service-und Spritzen Sie es wie gewohnt. Dann, auf ngAfterViewInit auf jeder Seite, die Sie wollen dieses Verhalten, einfach anrufen.[scroll service-variable-name].scrollToTop(). Schließlich müssen Sie fügen Sie diese an die oben
<body>
im index.html:<div id="top-of-page"></div>
Service-Code:
InformationsquelleAutor der Antwort dockleryxk
Für Diejenigen von Euch, die finden
window.scrollTo(0,0)
nicht funktioniert (ich vermute wegen material-design sidenav aber Total raten) verwenden Sie die Methode finden Sie hier:Javascript - /CSS-Fenster.scrollTo(0,0) funktioniert nicht
InformationsquelleAutor der Antwort Helzgate
Ich bin mit material, sidenav, und ich konnte nicht Holen Sie sich eine der vorgeschlagenen Antworten für mich zu arbeiten. Hier ist meine funktionierende Lösung:
InformationsquelleAutor der Antwort Tyson
Anstelle des Schreibens von code in jeder Komponente, ich habe den folgenden code in einem Ort -
InformationsquelleAutor der Antwort Kanchan