角度组件:没有模板替换选项?

Ste*_*rov 47 javascript components replace angularjs

看起来新的AngularJS 1.5 Component概念中没有"替换"选项(就像指令一样).

如果我想将表行 <TR>元素作为组件,您会建议什么?在有效的HTML方面是不可能的?

实例:mailBox组件里面有邮件组件.通过标记mail-box-component是表,而mail-box是tr.

<mail-box>
    <mail ng-repeat="mail in $ctrl.mails" mail="mail"></mail>
<mail-box>
Run Code Online (Sandbox Code Playgroud)

UPD:关于指令的相关讨论 - 为什么在AngularJS中不推荐使用替换?

Pat*_*ter 23

由于替换:true标志已被弃用,因此不再可能采用角度方式

为什么在AngularJS中弃用了?

替换:真正的旗帜提出了比解决方案更多的问题,这就是它被删除的原因.因此,您不能再以这种方式构建指令并提供有效的table-tr-td标记.

但是,有两个原因可以解释为什么它不像它看起来那么糟糕:

  1. 你可以做任何你想做的事情,没有table,tr,td等,只使用div,span等元素和一些css就可以了

  2. web-components(和指令是第一次尝试模拟它们)并不意味着代表标记的这些小片段.他们被认为是一个真正做某事的功能齐全的组件.所以无论你想用你的tr做什么,你认为值得建立一个元素指令围绕它,它可能不是.

也许,你可以做的是使用属性指令代替:

<tr my-mail-directive></tr>
Run Code Online (Sandbox Code Playgroud)

并且你的my-mail-directive在tr元素上做了魔术

  • 如果我正确理解文档,那么组件也无法使用属性."限制:否(仅限于元素)" (2认同)
  • @PatrickKelleter 您使用的措辞只会引起混乱。组件不是指令,指令不是 Angular2 的一部分,简单明了,说组件是指令只会让人感到困惑 (2认同)
  • @BrianOgden我所说的是OLD elment-directives(ng1,restrict:'E')现在被称为ng2中的组件 - 而OLD属性指令(ng1,restrict:'A')不称为指令NG2.和是 - 在ng2中有指令.说指令不是ng2的一部分是错误的 - 简单明了.查看它的文档https://angular.io/docs/ts/latest/guide/attribute-directives.html (2认同)