Skip to content

[CdkTable] consolidate data index in RowContext  #14198

@shlomiassaf

Description

@shlomiassaf

Bug, feature request, or proposal: proposal

What is the expected behavior?

Property pointing at the location of the row in the data source should be the same
for CdkCellOutletMultiRowContext and CdkCellOutletRowContext

What is the current behavior?

The property pointing at the location of the row in the data source is index in single-row template mode and dataIndex in multi-row tempalte mode.

What is the use-case or motivation for changing an existing behavior?

When working with the context, to figure out which property to use one will have to have
access to the table to query multiTemplateDataRows or check both properties which is >= 0.

The use case is for more complex tables, where a row model is needed and the context can be used as such.

This get's really annoying when working with templates... you need to explicitly request index and dataIndex in the template and query for the one in use... because 0 is a valid value doing || is not good as you might end up with undefined

I know that RowContext<T> is public thus index and dataIndex must stay but it can be deprecated in the long run...

The code in the method _updateRowIndexContext() can become:

  context.index = context.dataIndex = this._renderRows[renderIndex].dataIndex;
  if (this.multiTemplateDataRows) { 
    context.renderIndex = renderIndex;
  }

Instead of

      if (this.multiTemplateDataRows) {
        context.dataIndex = this._renderRows[renderIndex].dataIndex;
        context.renderIndex = renderIndex;
      } else {
        context.index = this._renderRows[renderIndex].dataIndex;
      }

And in future version deprecate one of the properties.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P4A relatively minor issue that is not relevant to core functionsarea: material/tableneeds: discussionFurther discussion with the team is needed before proceeding

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions