[Paginator] Does not emit event when changed programatically
- Ngôn ngữ chính
- TypeScript
- Star
- 25k
- Fork
- 6.8k
- Merge trung bình
- 1 ngày 8 giờ
- Pull request đã merge (30 ngày)
- 91
Mô tả
#### Bug, feature request, or proposal:
Bug
#### What is the expected behavior?
Changing the page index programmatically should emit a `page` event.
#### What is the current behavior?
Assigning to `.pageIndex` does not emit a `page` event. There is no method to jump to a specified page and ensure that an event is emitted.
#### What are the steps to reproduce?
Open [this plunker](https://embed.plnkr.co/dPr77Z/). Enter a (different) page number in the input at the top of the page and click "Go To". The displayed paginator offset ("11-20") changes but the table results do not.
#### What is the use-case or motivation for changing an existing behavior?
The current behavior is wrong. The documentation for the `page` Output says "Event emitted when the paginator changes the page size or page index"; the page index has changed but the event was not emitted.
#### Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Still happening as of Beta 12, at least.
#### Is there anything else we should know?
I checked [paginator.ts](https://github.com/angular/material2/blob/master/src/lib/paginator/paginator.ts) and the event is emitted in various methods that change the page index (next / previous) but not in the setting for pageIndex itself. I don't know why this design decision was made so I hesitate to suggest that it be changed, but we need *some* way to tell the paginator to go to a page as though the user had clicked to get to that page.
In the short term, I noticed that the private method `_changePageSize` is exposed in the typings for this component, and does not check if the size being set is the current size. So I can call
this.paginator._changePageSize(this.paginator.pageSize);
to force the paginator to emit a `page` event. Of course it's a pretty awful hack, but it gets the intended behavior. It'd be nice to avoid this in a future release.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với src/lib/paginator/paginator.ts, nơi page event được phát ra khi chuyển sang trang tiếp theo và trang trước đó, rồi tái hiện vấn đề bằng Plunker được liên kết. Theo dõi pageIndex setter và hành vi liên quan của paginator; hoàn thành khi các thay đổi trang theo lập trình phát ra page event để kết quả của bảng sử dụng được cập nhật nhất quán.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- angular, typescript
- Lĩnh vực
- frontend
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 42/100