【问题标题】:How can i access Component Reference in Angular 2 by DOM element Id我如何通过 DOM 元素 ID 访问 Angular 2 中的组件引用
【发布时间】:2017-03-07 00:57:00
【问题描述】:

什么是-的等价物

angular.element(element).scope()

在 Angular 2.0 中?

在很多地方,我使用它来获取 Angular 1.x 应用程序中的范围变量,在 Angular 2 中是否有任何等价物?

如果不是

我如何删除这个依赖,因为我的代码有很多动态元素,如果我将它映射到 Angular 2,每个元素组件都将被初始化。 这个组件可以有 n 级子组件,我需要从 Parent 访问第 n 级子组件。

【问题讨论】:

  • 这听起来不像你在 Angular2 中做事的方式。您能否提供更多关于您实际尝试完成的工作的信息?
  • 基本上我有我的应用程序的命令体系结构,应用程序从服务器获取 Home、Container 或 View 的命令,并且基于服务器提供的 id,我正在获取该元素的范围并调用 API handleCommand他们的控制器。因此,为 Views 指定的命令直接进入查看,其他人不必在其间拦截此命令。
  • 我不太明白这意味着什么,但我很确定你应该重新考虑 Angular2 的这种方法。在 Angular2 中,您通常不直接处理 DOM。您更新模型并让 Angular2 进行 DOM 更新。
  • 也应该避免从 DOM 中读取。它不适用于服务器端渲染和 webworker 功能,通常不是您想要在 Angular2 中执行的操作。
  • 知道了,这就是我需要知道的,所以我会相应地修改我的架构。非常感谢

标签: angular typescript


【解决方案1】:

您应该完全避免在 Angular2 中进行 DOM 操作。也就是说,如果您仍然需要操作它,您可以import { DOCUMENT } from '@angular/platform-browser';。将其注入构造函数@Inject(DOCUMENT) private document 并以如下方法使用它:this.document.getElementById();

您还有另一个(更好的)选择,请查看:Where does DOM manipulation belong in Angular 2?

【讨论】:

    猜你喜欢
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    相关资源
    最近更新 更多