Javascript 角度组件:无模板替换选项?

Javascript 角度组件:无模板替换选项?,javascript,angularjs,replace,components,Javascript,Angularjs,Replace,Components,新组件概念中似乎没有“替换”选项(就像指令一样) 如果我想将表行元素作为组件,您有什么建议?就有效的HTML而言,这是不可能的吗 真实示例:邮箱组件中包含邮件组件。按标记,邮箱组件是table,邮箱是tr <mail-box> <mail ng-repeat="mail in $ctrl.mails" mail="mail"></mail> <mail-box> UPD:有关指令的相关讨论-由于replace:true标志已被弃用,

新组件概念中似乎没有“替换”选项(就像指令一样)

如果我想将表行
元素作为组件,您有什么建议?就有效的HTML而言,这是不可能的吗

真实示例:邮箱组件中包含邮件组件。按标记,邮箱组件是table,邮箱是tr

<mail-box>
    <mail ng-repeat="mail in $ctrl.mails" mail="mail"></mail>
<mail-box>



UPD:有关指令的相关讨论-

由于replace:true标志已被弃用,因此这不再是角度方式

replace:true标志出现的问题多于解决方案,这就是为什么它被删除的原因。 因此,您不能再以这种方式构建指令并提供有效的表标记

然而,有两个原因可以解释为什么情况没有看上去那么糟糕:

  • 没有table、tr、td等,您可以做任何您想做的事情。 只需使用div、span等元素和一些css就可以了

  • web组件(和指令)是第一次尝试模拟 它们)并不表示标记的这些小片段。 实际上,它们更多地被认为是一个功能齐全的组件 做点什么。所以不管你想用你的tr做什么 你认为围绕它建立一个元素指令是值得的吗 可能不是

  • 也许,您可以改为使用属性指令:

    <tr my-mail-directive></tr>
    
    
    

    您的my mail指令在tr元素上发挥了神奇的作用,解决方案是不使用具有严格结构要求的标记和CSS。
    邮件
    到底做什么?最有可能的是邮箱必须吸收其功能和整个模板。我希望每个邮件都是独立的组件,这是指令的工作,而不是组件。组件应该是自包含的UI小部件,请阅读更多关于Web组件的内容。@estus虽然我大体上同意这种观点,但这不一定是真的,想想option元素,如果没有选择元素,它就不会独立存在。不要使用
    tr
    。问题解决了。邮件列表不是表格数据,因此使用
    table
    在语义上无论如何都是错误的。如果我正确理解文档,组件的属性也是不可能的。“限制:否(仅限元素)”@PatrickKelleter您使用的措辞只会引起混淆。组件不是指令,指令不是Angular2的一部分简单明了,说组件是指令只会混淆people@BrianOgden我说的是,旧的elment指令(ng1,restrict:'E')现在在ng2中被称为组件,而旧的属性指令(ng1,restrict:'A')在ng2中不被称为指令。是的,ng2中有指令。说指令不是ng2的一部分是错误的——简单明了。请查看相关文档,我必须说,我回到了表/tr/td设置中,找到了我需要的页面。。。。一张桌子:)。任何情况下,在TH中定义一次宽度都很好,所有TD都会跟进。我发现这对DIV来说更难做到。我想你必须使用更多的CSS魔法。当你打印一个页面时,浏览器会在所有页面的顶部重复thead。你如何通过DIV实现这一点?