我正在使用 angular 10,cdktable,我面临以下问题。
当我在表格上执行搜索时,除非我单击应用程序中的任何位置(它神奇地更新),否则我的分页不会更新...
这是一个变更检测问题,我的应用程序正在使用 onPush 策略。
现在,我的表正在从这个 observable 中获取数据
connect(): Observable < Advertisers_advertisers_rows[] > {
return this.store.pipe(
select(advertiserPage),
map((res) => {
this.itemTotal = res.data.records
this.page = res.data.page
return res?.data?.rows || []
})
)
}
请注意,这里我正在更新项目和页面的总数。
现在,这被传递给表格组件
table.component.ts
<app-table
[dataSource]="this"
[pagination]="paginationOptions"
(pageChange)="loadPage($event)"
[itemTotal]="itemTotal"
></app-table>
它称自己为分页
分页.ts:
<app-table-pagination
*ngIf="pagination"
[options]="pagination"
[(page)]="page"
(pageChange)="pageChange.emit($event)"
[total]="itemTotal"
></app-table-pagination>
如果我遵循逻辑,则itemTotal
更改将作为输入传递给table
和,pagination
因此它应该触发更改。
如果我这样做,一切都会奏效
connect(): Observable < Advertisers_advertisers_rows[] > {
return this.store.pipe(
select(advertiserPage),
map((res) => {
this.itemTotal = res.data.records
this.page = res.data.page
this.changeDetection.markForCheck()
return res?.data?.rows || []
})
)
}
但我不明白为什么这是必要的。