Saya ingin dapat menggulir ke target saat tombol ditekan. Saya sedang memikirkan sesuatu seperti ini.
<button (click)="scroll(#target)">Button</button>
Dan dalam component.ts
metode saya seperti.
scroll(element) {
window.scrollTo(element.yPosition)
}
Saya tahu bahwa kode di atas tidak valid tetapi hanya untuk menunjukkan apa yang saya pikirkan. Saya baru saja mulai mempelajari Angular 4 tanpa pengalaman sebelumnya tentang Angular. Saya telah mencari-cari sesuatu seperti ini tetapi semua contoh ada di AngularJs yang sangat berbeda dengan Angular 4
javascript
html
angular
typescript
BuZZ-dEE
sumber
sumber
Jawaban:
Anda bisa melakukannya seperti ini:
lalu di komponen Anda:
Edit: Saya melihat komentar yang menyatakan bahwa ini tidak lagi berfungsi karena elemen tidak ditentukan. Saya membuat contoh StackBlitz di Angular 7 dan masih berfungsi. Bisakah seseorang memberikan contoh di mana itu tidak berfungsi?
sumber
scroll
fungsi pada komponen. Perhatikan bahwa event click memanggilscroll(target)
. Jika Anda ingin mendapatkan akses ke elemen dari dalam komponen tanpa harus meneruskan elemen tersebut, Anda dapat menggunakan@ViewChild
.id="target"
sebagai pengganti#target
dan itu memberi saya "kesalahan el tidak terdefinisi"!#target
ada di dalam*ngIf
, tetapi seharusnya berfungsi jika Anda menggunakan@ViewChild
metode di tautan dari @abbastecSebenarnya ada cara javascript murni untuk mencapai ini tanpa menggunakan
setTimeout
ataurequestAnimationFrame
atau jQuery.Singkatnya, temukan elemen di scrollView yang ingin Anda gulir, dan gunakan
scrollIntoView
.el.scrollIntoView({behavior:"smooth"});
Ini plunkr .
sumber
Inilah cara saya melakukannya menggunakan Angular 4.
Template
tambahkan fungsi ini ke Komponen.
sumber
Di Angular 7 bekerja dengan sempurna
HTML
Dalam komponen
sumber
#target
ditentukan setelah tombol, yang relevan jika Anda memiliki header mengambang misalnya ...Jon memiliki jawaban yang benar dan ini berfungsi di proyek sudut 5 dan 6 saya.
Jika saya ingin mengklik untuk menggulir dengan lancar dari navbar ke footer:
Karena saya ingin menggulir kembali ke header dari footer, saya membuat layanan tempat fungsi ini berada dan memasukkannya ke dalam komponen navbar dan footer dan meneruskannya ke 'header' atau 'footer' jika diperlukan. ingatlah untuk benar-benar memberikan deklarasi komponen nama kelas yang digunakan:
sumber
Cara lain untuk melakukannya di Angular:
Markup:
Tambahkan
ViewChild()
properti:Gulir ke mana pun Anda inginkan di dalam komponen menggunakan
scrollIntoView()
fungsi:sumber
Anda dapat menggulir ke elemen apapun ref pada tampilan Anda dengan menggunakan blok kode di bawah ini. Perhatikan bahwa target (elementref id ) bisa berada di tag html yang valid.
Di tampilan (file html)
di
.ts
file,sumber
Anda dapat mencapainya dengan menggunakan referensi ke elemen DOM sudut sebagai berikut:
Berikut adalah contoh di stackblitz
template komponen:
sumber
Dalam Angular Anda dapat menggunakan
ViewChild
danElementRef
: memberikan elemen HTML Anda referensidan di dalam komponen Anda:
dapat Anda gunakan
this.myDivRef.nativeElement
untuk mendapatkan elemen Andasumber
Saya telah melakukan sesuatu seperti yang Anda minta hanya dengan menggunakan jQuery untuk menemukan elemen (seperti
document.getElementById(...)
) dan menggunakan.focus()
panggilan.sumber
Anda dapat melakukan ini dengan menggunakan jquery:
kode ts:
kode html:
Terapkan ini pada elemen yang ingin Anda gulir:
Berikut adalah contoh stackblitz.
sumber