File tree Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -504,6 +504,7 @@ describe('CdkDrag', () => {
504
504
expect ( dragElement . style . touchAction )
505
505
. not . toEqual ( 'none' , 'should not disable touchAction on when there is a drag handle' ) ;
506
506
} ) ;
507
+
507
508
it ( 'should be able to reset a freely-dragged item to its initial position' , fakeAsync ( ( ) => {
508
509
const fixture = createComponent ( StandaloneDraggable ) ;
509
510
fixture . detectChanges ( ) ;
@@ -556,7 +557,14 @@ describe('CdkDrag', () => {
556
557
expect ( fixture . componentInstance . endedSpy ) . toHaveBeenCalledTimes ( 1 ) ;
557
558
} ) ) ;
558
559
559
- } ) ;
560
+ it ( 'should throw if attached to an ng-container' , fakeAsync ( ( ) => {
561
+ expect ( ( ) => {
562
+ createComponent ( DraggableOnNgContainer ) . detectChanges ( ) ;
563
+ flush ( ) ;
564
+ } ) . toThrowError ( / ^ c d k D r a g m u s t b e a t t a c h e d t o a n e l e m e n t n o d e / ) ;
565
+ } ) ) ;
566
+
567
+ } ) ;
560
568
561
569
describe ( 'draggable with a handle' , ( ) => {
562
570
it ( 'should not be able to drag the entire element if it has a handle' , fakeAsync ( ( ) => {
@@ -2631,6 +2639,15 @@ class NestedDropListGroups {
2631
2639
}
2632
2640
2633
2641
2642
+ @Component ( {
2643
+ template : `
2644
+ <ng-container cdkDrag></ng-container>
2645
+ `
2646
+ } )
2647
+ class DraggableOnNgContainer { }
2648
+
2649
+
2650
+
2634
2651
/**
2635
2652
* Component that passes through whatever content is projected into it.
2636
2653
* Used to test having drag elements being projected into a component.
Original file line number Diff line number Diff line change @@ -307,6 +307,12 @@ export class CdkDrag<T = any> implements AfterViewInit, OnDestroy {
307
307
. pipe ( take ( 1 ) )
308
308
. subscribe ( ( ) => {
309
309
const rootElement = this . _rootElement = this . _getRootElement ( ) ;
310
+
311
+ if ( rootElement . nodeType !== this . _document . ELEMENT_NODE ) {
312
+ throw Error ( `cdkDrag must be attached to an element node. ` +
313
+ `Currently attached to "${ rootElement . nodeName } ".` ) ;
314
+ }
315
+
310
316
rootElement . addEventListener ( 'mousedown' , this . _pointerDown , activeEventListenerOptions ) ;
311
317
rootElement . addEventListener ( 'touchstart' , this . _pointerDown , passiveEventListenerOptions ) ;
312
318
this . _handles . changes . pipe ( startWith ( null ) ) . subscribe ( ( ) =>
You can’t perform that action at this time.
0 commit comments