Angular 4 - 组件选择器在自定义指令中不起作用

2024-01-24

我正在 Angular 4 中使用 HTML 5 拖放。我创建了两个自定义属性指令来处理拖放事件。

一切工作正常,除了当我尝试拖动组件选择器时,我希望它应该转换为 HTML 元素。但组件选择器本身就在那里 -

<div><ang-textfield></ang-textfield></div>

我实施了ang-textfield组件选择器也添加到app.module declarations

这里有两个指令 -

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

public textFieldFlag: true;

constructor(private el: ElementRef) { }

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

private dragstart_handler(event) {
    let textfield_dom = "<ang-textfield></ang-textfield>";
    event.dataTransfer.setData("text", textfield_dom);
    event.dataTransfer.setData("text/plain", textfield_dom);
    event.dataTransfer.setData("text/html", textfield_dom);
    event.dataTransfer.setData("text/uri-list", textfield_dom);
    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";
}}

我实施了ang-textfield组件选择器到输出文本域 like -

<div><label>Textfield</label><input type="text" /></div>

这里是ang-textfield执行 -

import { Component } from '@angular/core';

@Component({
selector: 'ang-textfield',
templateUrl: './textfield.component.html'
})

export class TextFieldViewComponent {

constructor(){

}}

这里是ng-module -

@NgModule({
bootstrap: [
    AppComponent
],
imports: [
    BrowserModule,
    HttpModule,
    MdTabsModule,
    MdInputModule,
    MdButtonModule,
    MdCardModule,
    BrowserAnimationsModule
],
declarations: [
    AppComponent,
    FormsViewComponent,
    EmailViewComponent,
    MessageViewComponent,
    SettingsViewComponent,
    AdditionalSettingsViewComponent,
    FormListViewComponent,
    TextFieldViewComponent,
    AddFormViewComponent,
    AllFormsViewComponent,
    DragTextFieldDirective,
    DropFieldsDirective
],
providers: [
]
})

我的代码有什么问题吗?

Thanks!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 4 - 组件选择器在自定义指令中不起作用 的相关文章

随机推荐

  • 形成对对象的引用是否构成访问?

    形成对对象的引用是否构成访问 以下是 GCC 和 Clang 目前所做的事情 void test int const volatile ptr noexcept ptr movl rdi eax Reads ptr maybe unused
  • 在使用 MediaCodec 进行编码之前裁剪视频以进行 Grafika 的“连续捕获”活动

    我正在了解 Grafika 的 连续捕获 活动 它是关于使用 MediaCodec 录制视频 活动源代码位于https github com google grafika blob master src com android grafik
  • 朱莉娅:外积函数

    In R 功能outer结构上允许您获取两个向量的外积x and y同时提供了许多应用于每个组合的实际功能的选项 例如outer x y 创建一个 外积 矩阵 其中包含元素之间的差异x and y 朱莉娅有类似的东西吗 广播是添加时发生的
  • 创意中的无定形镜片

    我尝试对 scala 2 10 3 使用版本 2 0 0 的无形状镜片 我有与此类似的代码 import shapeless case class A map Map String String case class B a A val m
  • 在 Android Jetpack Compose 中使用 State 时出现 java.lang.IllegalStateException

    I have ViewModel使用 Kotlin 密封类为 UI 提供不同的状态 另外 我用androidx compose runtime State通知 UI 有关状态更改的对象 如果出现错误MyApi请求发生时 我把UIState
  • iCloud 和 Xcode 6 - 无处不在的容器

    我目前正在开发一个适用于 iOS 8 的应用程序 它使用 iCloud Drive 和 CloudKit Framework 一切都是使用 Xcode 6 设置的 When I try to submit my App to iTunesC
  • 如何构建F#类型的实现业务规则?

    我正在尝试在 F 中构建一个类型 当我获得该类型的对象时 我可以确定它处于有效状态 该类型称为JobId它只持有一个Guid 业务规则是 它必须是一个 Guid 但不能是空的 Guid 我已经在 C 中实现了该类型 但现在我想将其移植到 F
  • 从 ruby​​ c 扩展中的线程调用 IO 操作将导致 ruby​​ 挂起

    我在使用 C 扩展中的线程异步运行 ruby 代码时遇到问题 我有以下 C 代码 struct DATA VALUE callback pthread t watchThread void ptr void executer void pt
  • 如何检查 python 2.7 中的原始输入是否为整数?

    有没有一种方法可以用来检查raw input是一个整数 我在网上查了资料后发现了这个方法 print isinstance raw input number int 但是当我运行它并输入4例如 我得到FALSE 我对 python 有点陌生
  • 将 POI 工作簿流式传输到 servlet 输出流

    我在我的网络服务器上构建了一个非常大的 POI 工作簿 将整个工作簿保存在内存中 不会针对多个并发请求进行扩展 有没有办法可以逐步将工作簿写入 servlet 输出流 这应该会减少响应时间 并提高进程内存的效率 如果您要生成 Excel 2
  • Guice 和一般应用程序配置

    对于用 Java 编写的监控软件 我考虑使用 Google Guice 作为 DI 提供程序 项目需要从外部资源 文件或数据库 加载其配置 该应用程序设计为在独立模式或 servlet 容器中运行 目前 配置不包含用于依赖项注入的绑定或参数
  • 如何在Release模式下启用TRACE宏?

    The 跟踪宏 http msdn microsoft com en us library 4wyz8787 VS 80 aspx可用于在代码编译时向调试器输出诊断消息Debug模式 我在的时候需要同样的信息Release模式 有办法实现这
  • chrome浏览器粗边框问题

    边框折叠在 Chrome 浏览器中无法正常工作 有些边界线看起来很粗 请查看这张图片并帮助我解决这个错误 I need lite border for all rows but highlighted rows border are loo
  • 如何使用 scikit learn inverse_transform 和新值

    我有一组数据是我使用scikit learn PCA 我在使用 StandardScaler 执行 PCA 之前对数据进行了缩放 variance to retain 0 99 np scaled StandardScaler fit tr
  • Flex/Lex 和 Yacc/Bison 有什么区别?

    Flex Lex 和 Yacc Bison 之间有什么区别 我在网上疯狂搜索 没有找到任何可靠的答案 我可以在 Ubuntu 上安装纯 Lex 和 Yacc 还是可以只安装 flex 和 bison 我很困惑 Lex 或 Yacc 是否仍然
  • 查找点是否在给定圆心和半径的圆内

    我们有一个观点 x y 以及其他一些点 xi yi 我们如何确定哪一个 xi yi 在以圆心为圆心的圆内 x y 和半径r 给定数字 xi x 2 yi y 2 lt r 2
  • 如何找到与不受 git 控制的项目修订相对应的提交?

    考虑以下情况 我有一个项目的源代码 几个文件夹和文件 不幸的是 源代码不受版本控制 然而 这个项目有一个远程 git 存储库 如何在 git 存储库中找到与我的项目修订相对应的提交 我的强力方法是 克隆存储库 在不同的提交处签出并将签出的文
  • 登录系统设计允许每个用户一次在一台机器上登录

    我应该如何设计一个登录系统 使每个用户名一次只能在一个地方登录 我希望阻止用户将他们的用户名提供给其他人登录 这样他们就可以避免为每个用户付费 如果用户已经登录并尝试在另一台计算机上登录 我是否应该阻止第二次登录 如果用户在工作中登录然后尝
  • 使用vtk和k3d在jupyter笔记本中渲染gltf/glb文件

    我探索了如何在 jupyter 笔记本中内联渲染 gltf glb 文件以保持查看器回调交互性完整的可用方法 我最终使用 vtk 和 k3d 来实现这一目标 我遇到的两个障碍是 如何使用 vtkGLTFReader 从 vtkPolyDat
  • Angular 4 - 组件选择器在自定义指令中不起作用

    我正在 Angular 4 中使用 HTML 5 拖放 我创建了两个自定义属性指令来处理拖放事件 一切工作正常 除了当我尝试拖动组件选择器时 我希望它应该转换为 HTML 元素 但组件选择器本身就在那里 div div