用角度访问全局对象

时间:2018-10-03 17:41:00

标签: javascript angular angular5

我想知道访问全局对象并在Angular App中对这些对象发出一些事件的最佳方法,例如(窗口,本地存储,文档或任何其他目的)

是否像JS对象一样调用它,还是应该坚持使用Angular的方式?

并且是否不允许我在有角度的应用程序中使用jQuery之类的任何其他库来操作DOM?

2 个答案:

答案 0 :(得分:3)

最常见的方法是使用服务来跟踪应用程序周围的对象。无论您要访问什么数据,只要插入相应的服务即可。您可以在这里阅读有关服务的更多信息:https://angular.io/tutorial/toh-pt4

在进行DOM操作时,Angular具有自己的与DOM通信的功能。例如,您可以使用内置的Renderer2操作DOM。您还可以访问某些元素引用的nativeElement。不建议使用Vanilla JS或jQuery手动更新DOM。

Renderer2:https://angular.io/api/core/Renderer2

ElementRef:https://angular.io/api/core/ElementRef

答案 1 :(得分:2)

我会建议以下内容:

请勿访问文档对象以进行DOM操作或使用JQuery。 Angular本身提供了操作DOM所需的所有方法。结合使用Angular和JQuery将是一种反模式(IMO)。

以下是Angular中的一些工具,可让您操纵DOM:

  1. Template syntax,用于动态输出html文本
  2. NgClass,用于动态添加字符串
  3. *NgIf directive,用于有条件地显示某些DOM元素
  4. Renderer2,用于执行各种DOM操作。

您可以直接从角度应用程序中访问诸如本地存储和会话存储之类的东西。

为保存全局数据,我建议您使用服务,该服务使组件之间可以轻松共享数据。

当然,从理论上讲,您可以添加jQuery或其他用于DOM操作的库,但这首先破坏了使用Angular的全部目的。因为我们要使用Angular以相对容易的方式创建SPA的应用程序。