使用Angular 4。我有一个从它的父组件paging.component
获取页码和pageSize (在它获取数据之后)。
将使用生命周期钩子paging.component
查找对 ' 的更改。@Input
OnChanges
paging.component
也有一个<select>
输入,您可以在其中更改pageSize。
在此OnInit
阶段,<select>
将设置为从父组件传入的pageSize 。
如果你改变pageSize,<select>
一切正常,但我有时也想将pageSize从父组件更改为不同的值(如原始值)。
当我改变pageSize时,它不会更改<select>
输入。(即使其他一切似乎都正常工作)。
我尝试将以下代码添加到ngOnChanges
方法中:
if (this.pageSizeFG) {
this.pageSizeCtrl.setValue(this.pagesize);
}
但是,这会产生错误:
ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:“假”。当前值:“真”。
如果我尝试转到其他页面,分页似乎也会不断将自身重置到第 1 页。
我研究了一些其他的生命周期钩子ChangeDetectorRef
,和ngZone
,但这些似乎使问题变得更糟。
我在这里创建了一个plnkr 来演示错误。
如果您去paging.component.ts
并用 注释掉该行,this.pageSizeCtrl.setValue(this.pagesize);
那么一切正常,除了<select>
不更新。