从 DOM 元素获取 ComponentRef

2023-11-27

已经回答了如何从 Angular 2 组件获取 DOM 元素:ComponentRef.location.nativeElement(ComponentRef.location 提供了可以直接访问 DOM 的 ElementRef)。

But 如何做相反的事情,即当我只有本机 DOM 对象时获取对 ComponentRef 的引用?

当我尝试使用交互.js 拖放 Angular 2 组件时,我就遇到了这种情况。该库使用回调函数来通知哪个元素被拖动,以及我们试图将其放置在哪个元素上。一个event提供了对象,我发现的唯一有用的信息是 DOM 元素(target属性)。

Example:

interact('my-component-tag').draggable({
    // ...
    onstart: function (event:any) {
        var dom = event.target; // ref to the <my-component-tag> tag
        // How to find the Angular ComponentRef object here?
    }
    // ...
}).dropzone({
    // ...
    ondragenter: function (event:any) {
        var targetDom = event.relatedTarget; // targeted <my-component-tag> tag
        // Same question here,
        // to identify where we want to insert the dragged element.
    }
    // ...
});

笨蛋在这里

您可以检查处理程序src/Interactjs.ts。打开控制台以查看关联的日志并将一个组件放在另一个组件上。我有关于 DOM 元素的信息,但我想要 Angular 组件,比如说访问count属性。

发现和尝试:

我找到了一个jquery-ui-draggable 插件的解决方案,但是这个技巧在这里不起作用,至少对于掉落的目标来说是这样。

还有topics关于如何在 DOM 中插入,谈论 DomAdapter,但我还没有找到任何似乎有助于从 DOM 到 Angular 组件引用的方法。

我只是想到对我的组件进行手动搜索:在 DOM 节点中循环,计数以找到位置,并从组件列表中到达同一位置的组件,但它太丑了......

欢迎对此提出任何建议。谢谢阅读!


这可以通过使用来实现元素探针 API。它主要用于调试/量角器集成,类似于element.scope()在角度 1 中。

为了使用此 API,您需要包含ELEMENT_PROBE_PROVIDERS在你的bootstrap()称呼。然后,您将能够通过调用全局来获取任何组件实例ng.probe().

例如,以下是获取当前事件目标的组件实例的方法:

ng.probe(event.target).componentInstance

更新后的 Plunker 显示这是操作

可以看到ElementProbe API的实际实现Here.

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

从 DOM 元素获取 ComponentRef 的相关文章

随机推荐

  • 如何使TabPages可拖动?

    我想让用户通过拖放来重新排列 TabPages 顺序 此外 如果用户能够将 TabPages 从一个 TabControl 拖动到另一个 TabControl 那就太酷了 两种方式都与 Firefox 和 Total Commander 类
  • 将 List[Either[A, B]] 转换为 Either[List[A], List[B]]

    如何转换List Either String Int to Either List String List Int 使用类似于猫的方法sequence 例如 xs sequence在下面的代码中 import cats implicits
  • 对月份(带字符串)排序算法

    我有这个月的数组 January March December October 我想把它排序如下 January March October December 我目前正在思考 如果 否则 可怕的级联 但我想知道是否还有其他方法可以做到这一点
  • 将 strsplit 应用于 data.frame 中的特定列

    我有一个包含分类信息的大型数据框 这是一个例子 gt d lt data frame x c 1 2 3 4 classification c cl1 scl1 cl2 cl3 bla cl4 subclass2 gt d x classi
  • onClick 事件未触发 |安卓

    我制作了一个非常简单的测试应用程序 其中包含一项活动和一种布局 这onClick第一次按下时不会触发 正如它应该的那样 活动 package com example mytest import android os Bundle impor
  • 无法 docker pull - 连接被拒绝

    我正在 ubuntu virtualbox 中从 docker 运行以下命令 并收到连接被拒绝错误 我位于公司代理后面 并配置了环境变量以使用代理以及用户名和密码 我还尝试使用代理链 root mbak1 VirtualBox sudo p
  • 有没有办法在 JSP 中填充地图?

    例如
  • 什么是“此处需要”错误

    它位于我的 Eclipse Problems 视图中 代码编译正常 但出现错误 required from here 指向一些 boost 头文件和行state data const current state interlocked co
  • 如何测试 Haskell 中的错误?

    我希望能够确保函数在接收到无效值时会抛出错误 例如 假设我有一个仅返回正数的函数 pos pos Int gt Int pos x x gt 0 x otherwise error Invalid Input 这是一个简单的例子 但我希望你
  • 冗余通用参数

    我有这两个接口和类 public interface Identifiable
  • 如何保护nodejs中的公共动态文件夹

    我在 public images picture jpg 中显示带有玉的图片 但我想保护某些图片或限制对公共文件夹的访问 该怎么做 project node modules public images image jpg javascrip
  • 如何在Excel中仅复制单元格的纯文本?

    我正在设计一个 Excel 工作表 用户将单击一个命令按钮来复制预定的单元格范围 然后 用户可以使用 Firefox 或 IE 将内容粘贴到 Web 应用程序中 Web 应用程序的设计超出了我的控制范围 目前用于数据输入的文本框是富文本输入
  • 为多个变量制作堆积条形图 - R 中的 ggplot2

    我在 ggplot2 中制作堆积条形图时遇到一些问题 我知道如何用 barplot 制作一个 但我想使用 ggplot2 因为很容易使条形具有相同的高度 如果我没有记错的话 使用 position fill 我的问题是我有多个变量 我想将它
  • 有效地找到独特的排列

    我有以下问题 我需要计算一个集合的排列 然而 该集合可能包含两个相同的元素 因此会导致重复排列 例如 给定集合 0 0 1 2 排列包括以下可能性 1 2 0 0 1 2 0 0 但是 我想避免类似的相同排列 在 MATLAB 中我可以简单
  • 验证一个字段或另一个字段是否存在 (XOR)

    如何验证一个或另一个字段的存在 但不能同时验证两个字段和至少一个字段的存在 如果您将条件添加到数值验证中 您的代码将起作用 如下所示 class Transaction lt ActiveRecord Base validates pres
  • 如何退出或关闭(而不是杀死)Word文档(进程)?

    在我们公司 我们使用 Windows 应用程序生成 Word 2010 文档 有时文档没有正确关闭 因此另一个应用程序 是的 他们仍然称之为开发 杀死运行超过1分钟的word进程 这些被杀死的进程存储在MS Word的 文档恢复 中 这些文
  • 如何使控制中心滑块可编辑?

    我正在开发一个可以播放声音文件的应用程序 如果我打开苹果音乐应用程序 滑块可以让我在我所在的歌曲之间移动 其他应用程序 例如 Spotify 或 overcast 不允许这种行为 到目前为止 我已经能够更改控制中心的所有参数 但除外 有什么
  • opencv中cv::KeyPoint类的类成员class_id的含义和用途是什么?

    OpenCV 2 4 3参考手册中KeyPoint class id被描述为 可用于按其所属对象对关键点进行聚类的对象 ID 由于我对 关键点 缺乏足够的了解 我无法理解其目的是什么class id 我的另一个问题是 通过使用特征检测器 描
  • 是否可以可靠地将用户文件自动解码为 Unicode? [C#]

    我有一个网络应用程序 允许用户上传其内容进行处理 处理引擎需要 UTF8 并且我正在从多个用户的文件编写 XML 因此我需要确保可以正确解码上传的文件 因为如果我的用户知道他们的文件 我会感到惊讶were编码 我几乎不希望他们能够正确spe
  • 从 DOM 元素获取 ComponentRef

    已经回答了如何从 Angular 2 组件获取 DOM 元素 ComponentRef location nativeElement ComponentRef location 提供了可以直接访问 DOM 的 ElementRef But