1

更新:

我正在使用 a来自定义MatDataTable显示FormArray内容,DataSource问题似乎出在DataSource.connect()函数上。我正在合并 2 个 observables 以根据分页器页面配置对数据进行切片,如下所示:

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 个会出现。在此处查看并注意控制台调试日志。另外,请注意当您更改任何添加超过 5 个项目的分页器控件时会发生什么:

https://stackblitz.com/edit/angular-tdrjqy

原始问题:

FormArray数组中带有 a 的FormGroupa怎么可能controls没有值?我在我的应用程序的 2 个部分中设置了相同的设置,但由于某种原因,在一个部分中,该值是一个空数组......我已经花了几个小时在这上面,但我无法复制它,修复它或找到任何解释这里发生的事情的文档!

这是控制台日志的屏幕截图FormArray

控制台日志

4

0 回答 0