angular / angular/components

[CdkTable] consolidate data index in RowContext

Aperta
#14,198 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
area: material/table needs: discussion P4
Lingua principale
TypeScript
Stelle
25k
Fork
6.8k
Merge medio
1g 8h
PR unite (30g)
91

Descrizione

#### 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.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia leggendo `_updateRowIndexContext()` e la modifica proposta nell’issue. Verifica come aggiorna `index`, `dataIndex` e `renderIndex` per le modalità di template a riga singola e a più righe. Il lavoro è completato quando entrambi i tipi di contesto della riga espongono lo stesso indice dell’origine dati, mentre la modalità a più righe continua a impostare l’indice di rendering.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
angular, typescript
Ambito
frontend
Tipo di issue
Funzionalità
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.