请教老师,我的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]', })
022018-08-15
Angular打造企业级协作平台,让你在Angular领域中出类拔萃
998 学习 · 536 问题
相似问题