You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was
No response
Description
I'm facing an issue where Typescript won't allow me to use strongly typed version of CdkDragEnter. In a service I have a method with defined types for CdkDragEnter's item and container data.
CdkDropList's entered is typed like this: EventEmitter<CdkDragEnter<T>> which results in CdkDragEnter's 2nd type argument assuming the same type as the 1st argument. That way it won't allow me to define two different types for the container's and the item's data.
Reproduction
StackBlitz link:
Steps to reproduce:
define an element in template
add cdkDropList directive
add arbitrary data to cdkDropListData directive
add (cdkDropListEntered)="onDropListEnter($event) to react to the event
Typing for entered Event Emitter allows different types between item and container data.
This is already the case for the dropped Event Emitter which is typed like this: EventEmitter<CdkDragDrop<T, any>>
So I'm guessing that this could already be a possible solution?
Actual Behavior
$event in (cdkDropListEntered)="onDropListEnter($event) gets highlighted in red and build fails because The types of 'container.data' are incompatible between these types.
Is this a regression?
The previous version in which this bug was not present was
No response
Description
I'm facing an issue where Typescript won't allow me to use strongly typed version of
CdkDragEnter
. In a service I have a method with defined types forCdkDragEnter
's item and container data.https://github.com/angular/components/blob/main/src/cdk/drag-drop/directives/drop-list.ts#L138
CdkDropList
'sentered
is typed like this:EventEmitter<CdkDragEnter<T>>
which results inCdkDragEnter
's 2nd type argument assuming the same type as the 1st argument. That way it won't allow me to define two different types for the container's and the item's data.Reproduction
StackBlitz link:
Steps to reproduce:
cdkDropList
directivecdkDropListData
directive(cdkDropListEntered)="onDropListEnter($event)
to react to the eventonDropListEnter
liks this:Expected Behavior
Typing for
entered
Event Emitter allows different types between item and container data.This is already the case for the
dropped
Event Emitter which is typed like this:EventEmitter<CdkDragDrop<T, any>>
So I'm guessing that this could already be a possible solution?
Actual Behavior
$event
in(cdkDropListEntered)="onDropListEnter($event)
gets highlighted in red and build fails becauseThe types of 'container.data' are incompatible between these types.
Environment
Angular CLI: 17.3.3
Node: 20.11.0
Package Manager: npm 10.2.4
OS: darwin arm64
Angular: 17.3.4
... animations, common, compiler, compiler-cli, core, forms
... localize, platform-browser, platform-browser-dynamic, router
Package Version
@angular-devkit/architect 0.1703.3
@angular-devkit/build-angular 17.3.3
@angular-devkit/core 17.3.3
@angular-devkit/schematics 17.3.3
@angular/cdk 17.3.3
@angular/cli 17.3.3
@schematics/angular 17.3.3
rxjs 7.8.1
typescript 5.3.3
zone.js 0.14.4
The text was updated successfully, but these errors were encountered: