angular / components

Component infrastructure and Material Design components for Angular
https://material.angular.io
MIT License
24.39k stars 6.76k forks source link

bug(tree): Using cdk-tree with ArrayDataSource and Observable can cause expand functionality to fail under certain conditions. #29661

Open examan opened 2 months ago

examan commented 2 months ago

Is this a regression?

The previous version in which this bug was not present was

No response

Description

Using cdk-tree with ArrayDataSource and Observable, the expand functionality can fail under the following conditions:

  1. The Observable emits more than one value asynchronously.
  2. The emitted values are dynamically generated.
  3. trackBy is not based on identity comparison.

Reproduction

StackBlitz link: https://stackblitz.com/edit/2ypkpy?file=src%2Fexample%2Fcdk-tree-flat-children-accessor-example.ts Steps to reproduce: Click the tree node toggler

Expected Behavior

Child nodes expand normally.

Actual Behavior

Child nodes fail to expand.

Environment

     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/

Angular CLI: 18.2.1
Node: 18.20.3
Package Manager: yarn 1.22.19
OS: linux x64

Angular: 18.2.2
... animations, cdk, common, compiler, compiler-cli, core, forms
... localize, material, material-experimental
... material-moment-adapter, platform-browser
... platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1802.1
@angular-devkit/build-angular   18.2.1
@angular-devkit/core            18.2.1
@angular-devkit/schematics      18.2.1
@angular/cli                    18.2.1
@schematics/angular             18.2.1
rxjs                            7.4.0
typescript                      5.5.4
zone.js                         0.14.10
wagnermaciel commented 1 month ago

@BobobUnicorn Can this issue be collapsed into https://github.com/angular/components/issues/29669 or should the be tracked separately?