【发布时间】:2017-06-06 12:22:36
【问题描述】:
我想实现一个 Angular 2 指令,其行为类似于 jQuery's wrapInner method。
我正在编写的库将仅使用 Angular 2+(无 jQuery)。
基本上,该指令将获取已应用的元素或组件的内容,并将该内容包装在 div 中(或者可能将其包装在作为参数传入的其他 html 标记中)
例如,
<myComponent wrapInner>
... All The Content ...
</myComponent>
应该会产生类似的结果,
<myComponent >
<div class="innerStyles" >
... All The Content ...
</div>
</myComponent>
我不确定最有角度的“惯用”方法是什么,因为它似乎涉及操纵discouraged 的DOM。
那么这可能是一个结构指令更好的东西吗?还是涉及以某种方式操纵templates 或使用ViewContainer?我不知道如何使用这些。
但是,我已经组装了一个 plunker,我使用 (discouraged) 不安全和低效的方式来解决这个问题;通过ElementRef 操作DOM。
请提供帮助。
我真的很感激!
【问题讨论】:
-
忽略
ElementRef是不安全的。使用 jQuery 并没有更不安全。 “不会自动保护您免受安全漏洞的影响”意味着您不会自动受到 Angular 的保护。如果您注意不要自己做会导致安全问题的事情,那么它是非常安全的。 -
不仅仅是安全问题......在我的 plunker 中,我发现我必须手动循环并添加每个孩子、孙子、曾孙......各种节点......如果他们的多层嵌套节点这将成为我想象的效率噩梦
-
Angular2 没有提供任何东西。你可以搜索一下是否有一些 JS 方法可以让它变得更简单。
标签: angular angular2-directives wrapinner