Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度4-组件选择器未显示HTML元素_Javascript_Html_Angular_Drag And Drop - Fatal编程技术网

Javascript 角度4-组件选择器未显示HTML元素

Javascript 角度4-组件选择器未显示HTML元素,javascript,html,angular,drag-and-drop,Javascript,Html,Angular,Drag And Drop,我需要拖放(HTML5)组件选择器,它应该转换成相关的HTML元素。但我看到的是HTML中的组件选择器 我只是简单地描述一下- 我做了两个自定义属性指令来拖放字段 <button md-raised-button type="button" draggable="true" dragTextField>Text Field</button> 这里的dropFields是另一个用于处理drop和dragover事件的自定义属性指令 以下是处理拖放操作的@HostList

我需要拖放(HTML5)组件选择器,它应该转换成相关的HTML元素。但我看到的是HTML中的组件选择器

我只是简单地描述一下-

我做了两个自定义属性指令来拖放字段

<button md-raised-button type="button" draggable="true" dragTextField>Text Field</button>
这里的
dropFields
是另一个用于处理
drop
dragover
事件的自定义属性指令

以下是处理拖放操作的
@HostListener
事件-

@Directive({ selector: '[dragTextField]' })
export class DragTextFieldDirective {

constructor(private el: ElementRef) { }

@HostListener('dragstart', ['$event']) ondragstart(event) {
    this.dragstart_handler(event);
}

private dragstart_handler(event) {
    event.dataTransfer.setData("text", "<ang-textfield></ang-textfield>");
    event.dataTransfer.setData("text/plain", "<ang-textfield></ang-textfield>");
    event.dataTransfer.setData("text/html", "<ang-textfield></ang-textfield>");
    event.dataTransfer.setData("text/uri-list", "<ang-textfield></ang-textfield>");
    event.dropEffect = "copy";
}}
@Directive({ selector: '[dropFields]' })
export class DropFieldsDirective {

constructor(private el: ElementRef) { }

@HostListener('drop', ['$event']) ondrop(event) {
    event.preventDefault();
    this.drop_handler(event);
}

@HostListener('dragover', ['$event']) ondragover(event) {
    event.preventDefault();
    this.drag_over_handler(event);
}

private drop_handler(event) {
    var data = event.dataTransfer.getData("text/html");
    var div = document.createElement('div');
    div.innerHTML = data;
    console.log(div);
    event.target.appendChild(div);
    return false;
}

private drag_over_handler(event) {
    event.dataTransfer.dropEffect = "copy";
}}
console.log(div)
将提供HTML元素,而不是

@Directive({ selector: '[dragTextField]' })
export class DragTextFieldDirective {

constructor(private el: ElementRef) { }

@HostListener('dragstart', ['$event']) ondragstart(event) {
    this.dragstart_handler(event);
}

private dragstart_handler(event) {
    event.dataTransfer.setData("text", "<ang-textfield></ang-textfield>");
    event.dataTransfer.setData("text/plain", "<ang-textfield></ang-textfield>");
    event.dataTransfer.setData("text/html", "<ang-textfield></ang-textfield>");
    event.dataTransfer.setData("text/uri-list", "<ang-textfield></ang-textfield>");
    event.dropEffect = "copy";
}}
@Directive({ selector: '[dropFields]' })
export class DropFieldsDirective {

constructor(private el: ElementRef) { }

@HostListener('drop', ['$event']) ondrop(event) {
    event.preventDefault();
    this.drop_handler(event);
}

@HostListener('dragover', ['$event']) ondragover(event) {
    event.preventDefault();
    this.drag_over_handler(event);
}

private drop_handler(event) {
    var data = event.dataTransfer.getData("text/html");
    var div = document.createElement('div');
    div.innerHTML = data;
    console.log(div);
    event.target.appendChild(div);
    return false;
}

private drag_over_handler(event) {
    event.dataTransfer.dropEffect = "copy";
}}
private drop_handler(event) {
var data = event.dataTransfer.getData("text/html");
var div = document.createElement('div');
div.innerHTML = data;
console.log(div);
event.target.appendChild(div);
return false;}