angular / angular/components

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

Offen
#22,508 3 Kommentare 10 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area: cdk/drag-drop feature P4
Vorherrschende Sprache
TypeScript
Sterne
25k
Forks
6.8k
Ø Merge
1 T. 8 Std.
Gemergte PRs (30 T.)
91

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, typescript
Bereich
frontend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.