请教老师,我的onDragEnter方法里的dragData总是null,不知是什么原因

来源:4-3 打造支持拖拽的属性型指令

木讷25

2018-08-14

@Directive({

    selector: '[appDroppable][dropTags][dragEnterClass]'

})

export class DropDirective {


@Output() dropped = new EventEmitter<DragData>();

@Input() dragEnterClass: string;

@Input() dropTags: string[] = [];

private data$;


constructor(

    private el: ElementRef,

    private rd: Renderer2,

    private service: DragDropService

) {

    // console.log('this.service.getDragData(): ', this.service.getDragData().take(1));

    

    this.data$ = this.service.getDragData().take(1);

}


@HostListener('dragenter', ['$event'])

onDragEnter(ev: Event) {

    ev.preventDefault();

    ev.stopPropagation();

    if (this.el.nativeElement === ev.target) {

        this.data$.subscribe(dragData => {

            console.log(dragData); // print: null

            if (this.dropTags.indexOf(dragData.tag) > -1) {

                this.rd.addClass(this.el.nativeElement, this.dragEnterClass);

            }

        });

    }

}


github: https://github.com/LeMueller/angular_task_manager


写回答

1回答

接灰的电子产品

2018-08-14

你的 drag 指令定义的 selector 中没有 dragdata 啊,所以无法设置

@Directive({    
selector: '[appDraggable][dragTag][draggedClass][dragData]',    
})


0
2
接灰的电子产品
回复
木讷25
你的 github 我看的时候是没有的,看一下我的 github 源码对比一下吧 https://github.com/wpcfan/taskmgr
2018-08-15
共2条回复

Angular打造企业级协作平台,让你在Angular领域中出类拔萃

全网首个介绍官方 Material 组件库用法与 Redux 在 Angular 中的应用

998 学习 · 536 问题

查看课程