Tôi có một danh sách các mục mà tôi đang hiển thị sử dụng *ngFor
Duy trì vị trí cuộn trong danh sách khi các mặt hàng mới được thêm vào
<div id="container">
<div
[class.selected]="selectedItem.id == item.id"
#container
*ngFor="let item of items; indexBy: byId">{{item.name}}</div>
</div>
tôi tiếp tục cập nhật các mảng danh sách theo định kỳ.
this.listService.index((items) => this.items = items)
Tôi có một selectedItem
được sử dụng để đánh dấu một mục được chọn.
Khi tôi cập nhật danh sách, các mục mới có thể được thêm vào phía trên mục đã chọn (chủ yếu) và bên dưới mục đã chọn. Khi điều đó xảy ra, mục được chọn sẽ di chuyển ra khỏi vị trí xem hiện tại. Tôi muốn điều chỉnh scrollOffset của div cha mẹ như vậy là vị trí của các mục trong danh sách vẫn ở cùng một vị trí xem.
Cập nhật:
Để làm điều này, tôi tiết kiệm
this.offset; = this.container.scrollHeight - this.container.scrollTop;
và thêm một dòng sau khi cập nhật this.items
this.listService.index((items) => {
this.items = items
this.container.scrollTop = this.container.scrollHeight - this.offset;
})
doesnt này làm việc nhưng, gói này với các công trình thời gian chờ chính xác như tôi muốn.
setTimeout(() => {
this.scrollPosition.restore()
}, 300)
Sau khi cập nhật this.items
, có sự chậm trễ trong việc hiển thị các phần tử dom mới.
Làm cách nào để có được sự kiện mà các thành phần mới đã được thêm vào?
scrollTop vẫn giữ nguyên sau khi cập nhật các mục. Tôi muốn thay đổi scrollTop sao cho các mục trong chế độ xem không bị đẩy xuống khi mục mới được thêm ở trên cùng. Đã cập nhật câu hỏi của tôi. Cảm ơn –