কিছু সমাধান রয়েছে, সেগুলি অবশ্যই পরীক্ষা করে দেখুন :)
রাউটার আউটলেটটি activateযখন কোনও নতুন উপাদান তাত্ক্ষণিকভাবে চালু করা হচ্ছে তখন ইভেন্টটি ছড়িয়ে দেবে , তাই আমরা (activate)শীর্ষে স্ক্রোল করতে (উদাহরণস্বরূপ) ব্যবহার করতে পারি :
app.componal.html
<router-outlet (activate)="onActivate($event)" ></router-outlet>
app.componal.ts
onActivate(event) {
window.scroll(0,0);
...
}
মসৃণ স্ক্রোলের জন্য উদাহরণটি হিসাবে এই সমাধানটি ব্যবহার করুন:
onActivate(event) {
let scrollToTop = window.setInterval(() => {
let pos = window.pageYOffset;
if (pos > 0) {
window.scrollTo(0, pos - 20);
} else {
window.clearInterval(scrollToTop);
}
}, 16);
}
আপনি যদি নির্বাচনী হতে চান তবে বলুন যে প্রতিটি উপাদানকে স্ক্রোলিং ট্রিগার করা উচিত নয়, আপনি এটি একটি ifবিবৃতিতে এটি পরীক্ষা করতে পারেন :
onActivate(e) {
if (e.constructor.name)==="login"{
window.scroll(0,0);
}
}
Angular6.1 থেকে, আমরা { scrollPositionRestoration: 'enabled' }অধীর আগ্রহে লোড হওয়া মডিউলগুলিতেও ব্যবহার করতে পারি এবং এটি সমস্ত রুটে প্রয়োগ করা হবে:
RouterModule.forRoot(appRoutes, { scrollPositionRestoration: 'enabled' })
এটি ইতিমধ্যে মসৃণ স্ক্রোলিংও করবে। তবে প্রতিটি রাউটিংয়ে এটি করার জন্য এটি অসুবিধে রয়েছে।
অন্য একটি সমাধান হ'ল রাউটার অ্যানিমেশনে শীর্ষে স্ক্রোলিং করা। আপনি শীর্ষে স্ক্রোল করতে চান এমন প্রতিটি উত্তরণে এটি যুক্ত করুন:
query(':enter, :leave', style({ position: 'fixed' }), { optional: true })