In Angular2 hows best to show and hide child components?
我有 one parent component 和 three child components .
默认情况下 onInit 需要隐藏所有子组件 . 并且 childComponentA 需要显示父组件中按钮的单击 .
The flow:
我在 childComponentA 中有一个按钮,需要在click上显示 childComponentB ,而childComponentB组件有一个需要显示 childComponentC 的按钮 . 就像表演和隐藏的流程一样 .
Hows best to do this?
Possible solution?
我正在考虑创建一个所有子组件订阅显示和隐藏的服务 . 但不确定它是否是最佳解决方案 .
Parent Component HTML:
<section>
<button (click)="showChildComponentA()"></button>
<childComponentA></childComponentA>
<childComponentB></childComponentB>
<childComponentC></childComponentC>
</section>
2 回答
如果你想保持你的代码干净和可维护,并且没有遍布整个地方的布尔标志,那么最好使用一个服务(可能称为
ToggleService
)来处理切换和检查是否应该显示某些内容 .例如,这里有一个简单的
ToggleService
,它使您能够创建新项目,删除项目,并使用show / hide方法切换项目的可见性(请记住,下面没有任何测试,我只是简单地写了所有内容)这个问题的飞行 - 但这一切看似合乎逻辑,应该有效):现在,在您的组件中,您可以利用该服务:
在模板中:
请记住,单击其中一个按钮不会隐藏另一个按钮 . 为此,您可能想要创建一个
toggle
方法,该方法将循环遍历服务中的整个toggleMap
并使所有内容都为false,然后将一件事设置为true .我会留下最后一点作为锻炼给你;)
我会选择基于组件的设计 . 在我看来,事件驱动设计并不酷,因为很难跟踪哪个组件与哪个事件发布者进行交互 .
Stackblitz example