bug(MatTree): expandAll() only expand the first level
- Langage dominant
- TypeScript
- Étoiles
- 25k
- Forks
- 6.8k
- Merge moyen
- 1 j 8 h
- PR mergées (30 j)
- 91
Description
### Is this a regression?
- [x] Yes, this behavior used to work in the previous version
### The previous version in which this bug was not present was
17.x
### Description
Reopen Issue #29865. [CDK/Material: 19.1.2](https://github.com/angular/components/blob/19.1.2/src/cdk/tree/tree.ts) contains a fix [#30226](https://github.com/angular/components/pull/30226) but the issue still persists.
The method expandAll() of MatTree expands only the first level of a deeply nested tree. On deprecated MatTreeControl, the same method was able to expand the entire tree without problems.
WORKAROUND:
```typescript
this.dataSource.forEach(node => this.tree.expandDescendants(node));
```
### Reproduction
StackBlitz link:
* Flat nodes: https://stackblitz.com/edit/jfoxsvj4?file=src%2Fexample%2Ftree-flat-child-accessor-overview-example.ts
* Nested nodes: https://stackblitz.com/edit/r8azqcn7?file=src%2Fexample%2Ftree-nested-child-accessor-overview-example.ts
Steps to reproduce:
1. Open the demos.
2. The tree is partially expanded
3. Edit the demo and enable the workaround on the ngAfterViewInit callback.
4. The tree is now fully expanded.
### Expected Behavior
MatTree's expandAll() should expand all nodes.
### Actual Behavior
Only the first level nodes are expanded.
### Environment
- Angular: 19.1.2
- CDK/Material: 19.1.2
- Browser(s): Chrome
- Operating System (e.g. Windows, macOS, Ubuntu): Windows
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par src/cdk/tree/tree.ts au niveau de expandAll(), puis comparez son comportement avec celui de expandDescendants() et des reproductions StackBlitz liées, plate et imbriquée. Vérifiez la modification avec les deux démos et confirmez que expandAll() étend chaque nœud d’un arbre profondément imbriqué, et pas seulement le premier niveau.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- angular, typescript
- Domaine
- frontend
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100