AngularJS组件可以修改其包装元素吗?

时间:2016-07-15 22:23:20

标签: javascript angularjs components

我喜欢将Angular组件视为元素指令。给定一个名为hero的组件,我可以在父模板中使用它,如下所示:

<hero myparam="something"></hero>

我想将hero元素用作组件管理的容器,组件负责整个元素。

预期

以下是我希望摆脱上述约束的行为:

<hero id="component123" class="alien" custom="foo">text</hero>

我的自定义组件会转换给定元素,并在其认为合适时使用它。

实际

但是,组件似乎只能将其模板内部渲染为hero元素。我能得到的最好的是:

<hero myparam="something">
    <div id="component123" class="alien" custom="foo">
        text
    </div>
</hero>

我觉得这很糟糕,因为英雄元素实际上不是英雄,而是真正的英雄包装。这会混淆语义并产生不必要的额外元素。

在Angular中最好的做法是将组件用作纯包装器并将实际组件放在里面吗?

这是一个正式的样本: https://plnkr.co/edit/NKjCDS8OEngYHNrBmC5O?p=preview

1 个答案:

答案 0 :(得分:1)

  

我喜欢将Angular组件视为元素指令。

组件可以被认为是一种更新模板的特殊指令。如果要更改属性,请使用实际指令(属性指令)

  

我的自定义组件转换给定元素并将其用作它   认为合适。

当你谈到变换时,你需要指令,而不是组件。