尽管包含FormControls的控件,FormArray值为空

时间:2018-04-04 03:12:00

标签: angular observable angular-material2 formarray angular-cdk

更新

我正在使用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数组FormGroupcontrols的{​​{1}}怎么可能没有值?我在我的应用程序的两个部分中有相同的设置但由于某种原因,在一个部分中,值是一个空数组......我花了几个小时在这上面并且不能为我的生活复制它,修复它或找到任何解释这里发生的事情的文件!

以下是FormArray

的控制台日志的屏幕截图

console log

0 个答案:

没有答案