angular / angular/components

[CdkTable] consolidate data index in RowContext

Abierto
#14,198 3 comentarios 0 reacciones 0 asignados Ver en GitHub
area: material/table needs: discussion P4
Lenguaje dominante
TypeScript
Estrellas
25k
Forks
6.8k
Merge medio
1 d 8 h
PR fusionados (30 d)
91

Descripción

#### 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` 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:

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

```ts
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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza leyendo `_updateRowIndexContext()` y el cambio propuesto en el issue. Comprueba cómo actualiza `index`, `dataIndex` y `renderIndex` para los modos de plantilla de una fila y de varias filas. Se considera terminado cuando ambos tipos de contexto de fila exponen el mismo índice del origen de datos, mientras que el modo de varias filas sigue estableciendo el índice de renderizado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
angular, typescript
Área
frontend
Tipo de issue
Nueva funcionalidad
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.