在属性指令中使用ElementRef?

时间:2017-10-25 09:24:35

标签: angular

我想知道..在属性指令中使用ElementRef被认为是不好的做法吗?目前我正在基于Date变量(时间表)定位一些元素,并且将来希望能够拖放元素,并将新的日期和时间信息发送到数据库(基于位置)。我发现我可以使用指令来做到这一点。但后来我看了documentation for ElementRef说明:

  

小心使用

     

直接访问时,请使用此API作为最后的手段   需要DOM。使用Angular提供的模板和数据绑定   代替。或者,您可以查看提供API的Renderer   即使直接访问本机元素也可以安全使用   不支持。

     

依赖直接DOM访问会产生紧密耦合   您的应用程序和渲染层之间将形成它   不可能将两者分开并将您的应用程序部署到Web中   工人。

所以我的问题是你会考虑我的元素的运动吗?#34;最后的手段"?如果没有,您将如何根据这些变量替换元素的位置?

1 个答案:

答案 0 :(得分:1)

不知何故,我认为他们试图最大限度地混淆这篇文档。

使用ElementRef完全没问题 文档实际引用的是访问ElementRef.nativeElement的方法或字段。

Angular竭尽全力抽象DOM并允许您避免直接DOM访问,而不是对浏览器DOM的强烈依赖。
这允许在服务器上运行Angular以进行服务器端呈现或在WebWorkers中将负载分散到多个CPU内核上。

如果您想使用SSR或Web Workers,请尽可能远离直接DOM访问。

如果您不打算使用SSR或Web Workers,可以直接进行DOM访问,特别是如果您正在使用无论如何都直接访问DOM的非Angular库。