更新
我正在使用MatDataTable
向自定义FormArray
显示DataSource
内容,问题似乎与DataSource.connect()
功能有关。我正在合并2个observable来根据paginator页面配置对数据进行切片,如下所示:
export class DimensionDataSource extends DataSource<any> {
renderedData: BuildingDimension[] = [];
constructor(
private _dimensions: FormArray,
private _paginator: MatPaginator,
) {
super();
}
connect(): Observable<BuildingDimension[]> {
// Listen for any changes in the base data or pagination
const displayDataChanges = [
this._dimensions.valueChanges,
this._paginator.page,
];
return Observable
.merge(...displayDataChanges)
.map(() => {
// Test for empty data set
if (!this._dimensions.value) {
return [];
}
// Grab the page's slice of the sorted data.
const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
this.renderedData = this._dimensions.value.splice(startIndex, this._paginator.pageSize);
// Set paginator length
this._paginator.length = this._dimensions.value.length;
return this.renderedData;
});
}
disconnect() { }
}
我在我的应用程序的其他地方成功使用了相同的方法,但在这里它不起作用。
我在Stackblitz进行实验时发现的内容如下。如果分页器页面大小设置为5,那么添加的前5个项目将不会出现在FormArray
值中,但是,第6个将会出现。在这里查看&amp;请注意控制台调试日志。另外,请注意当您更改任何添加了超过5个项目的任何paginator控件时会发生什么:
https://stackblitz.com/edit/angular-tdrjqy
原始问题:
FormArray
数组FormGroup
中controls
的{{1}}怎么可能没有值?我在我的应用程序的两个部分中有相同的设置但由于某种原因,在一个部分中,值是一个空数组......我花了几个小时在这上面并且不能为我的生活复制它,修复它或找到任何解释这里发生的事情的文件!
以下是FormArray
: