【问题标题】:Insert <tr> to <tbody> in angular 5 dynamically以角度 5 动态地将 <tr> 插入到 <tbody>
【发布时间】:2018-08-11 22:14:30
【问题描述】:

按照这个https://blog.thecodecampus.de/angular-2-dynamically-render-components/#comment-789,我能够在单击链接时动态创建子组件。除了我的父组件是

父.html

     <table>
     <thead>
         <tr>
            <th>Name</th>
            <th>Age</th>
         </tr>
      </thead>
      <tbody #parent>
      </tbody>
      </table>

子组件.html:

        <tr><td>Blue</td><td>23</td></tr>

子组件.ts:

       selector:"app-tr-rows";

现在,当 tr 插入到 tbody 中时,firefox 检查器给出:

     <app-tr-rows>
           <tr><td>Blue</td><td>23</td></tr>
     </app-tr-rows>

这会导致所有子行仅出现在名称列上。有什么办法?

【问题讨论】:

    标签: angular


    【解决方案1】:

    将子组件选择器更改为tr[app-row]

    这意味着该组件的选择器是任何具有app-row 属性的tr 标记。组件初始化后,将不再需要创建app-tr-rows 标签。它将改为创建一个tr 标记。

    然后,将父模板更改为使用ng-template,如下所示:

    <tbody>
      <ng-template #parent></ng-template>
    </tbody>
    

    这样,行组件将被添加为tbody 的子元素,而不是兄弟元素。

    最后把子模板中的tr标签去掉,就变成了:

    <td>Blue</td><td>23</td>
    

    Here is a StackBlitz demo

    【讨论】:

    • 如果我可以拥抱你十亿次。谢谢...像魅力一样工作!主要秘密武器是选择器吗?
    • 很高兴为您提供帮助。是的。它阻止所有东西被包裹在app-tr-rows
    猜你喜欢
    • 2020-06-27
    • 2014-04-06
    • 2017-11-08
    • 2020-03-06
    • 2019-09-18
    • 1970-01-01
    • 2019-07-22
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多