angular / angular/components

bug(cdkDropList): cdkDropList doesn't pick up dynamically added connected dropLists.

Open
#22,508 3 comments 10 reactions 0 assignees View on GitHub
area: cdk/drag-drop feature P4
Dominant language
TypeScript
Stars
25k
Forks
6.8k
Avg merge
1d 8h
Merged PRs (30d)
91

Description

#### Reproduction

We have a use case where we must dynamically add extra cdkDropList on the fly. In the [this StackBlitz](https://stackblitz.com/edit/cdk-droplist-sample-1) this is simulated by a ngIf.
When you drag an item from folder-2 to folder-0 folder 1 will open, but it doesn't accept the items. However, if you move it first to 0 then to 2, and back to 1, it will suddenly do. The same goes for eventual multiple added lists.


#### Expected Behavior

The behavior one would expect is demonstrated in [this StackBlitz](https://stackblitz.com/edit/cdk-droplist-sample-workaround?file=src/app/app.component.ts).
While this is working it's using undocumented internals, and forcing the connectedTo in 2 different ways, where I can not predict long-term stability.

#### Actual Behavior
The actual behavior is demonstrated in the first linked StackBlitx.
When we go from this:
![image](https://user-images.githubusercontent.com/1249083/115239341-e51e6f80-a11e-11eb-8b8b-897ab594e1be.png)
to:
![image](https://user-images.githubusercontent.com/1249083/115239399-f49db880-a11e-11eb-8901-34f725a097b0.png)
The folder-1 isn't accepting the item dragged on top of it

#### Environment

- Angular: 11.any
- CDK/Material: 11.any
- Browser(s): all
- Operating System (e.g. Windows, macOS, Ubuntu): all

Contributor guide

Open the contributing guide

Research direction

Start with the two linked StackBlitz reproductions, especially src/app/app.component.ts in the workaround, and reproduce the drag after ngIf adds folder-1. Trace how cdkDropList discovers connected lists during that update. Done means a dynamically added list accepts the item on the first drag without relying on undocumented internals; the payload names no project test.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, typescript
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.