我正在实现一个显示标签的递归组件,并使用可见性来仅显示活动内容。我选择这种方法是因为选项卡内容的生成和从DOM角度进行布局都很昂贵。
based on this,我看到当我隐藏标签时,嵌套的子标签仍然可见。
我认为处理此问题的最佳方法是创建一组css类:
这样,当tab设置为hidden时,我可以通过DOM元素递归,并将具有p-visible类的任何元素更改为具有p-visible-hidden类。类似地,当选项卡设置为可见时,我可以将具有p-visible-hidden类的所有元素切换为p-visible。
所以我想知道在Angular2中实现它的最佳方法 - 对我而言,最好的方法是实际选择子DOM元素。
提前感谢您的任何帮助:)
答案 0 :(得分:0)
我能够通过创建一个@Input布尔值(称为parentVisible)来解决问题,该布尔值指示父级是可见还是隐藏。此属性通过组件的递归层次结构向下级联。
parentVisible布尔值是设置每个子元素可见性的附加过滤器(如果parentVisible为false,则可见性设置为隐藏,如果parentVisible为true,则将visiblity设置为之前)
这种策略可以避免直接的DOM操作,这种操作被认为适合单元测试并以Angular2方式执行:微笑: