3

在我的智慧尽头,所以接触更聪明的人。我正在构建一个自定义的“选项卡式”CMS 系统。问题在于选项卡和组件。我希望在新生成的选项卡中显示特定组件,换句话说,我希望动态加载组件。澄清:

图片1

在图 1 中,我们看到了我们的布局,我们有带有链接的左侧边栏、显示已打开选项卡的选项卡架和显示已加载选项卡内容的内容架。

图二

在图 2 中,当我单击侧边栏中的“帮助”链接时,我们看到了我们的布局。在选项卡持有区域创建一个带有标题的选项卡,并将其内容加载到内容区域。

我需要的:

  1. 默认情况下,“仪表板”选项卡处于活动状态且不可关闭。
  2. 当我单击侧边栏中的“帮助”链接时,我希望初始化 HelpComponent 加载。我想在选项卡持有者区域和内容区域中创建标题为“帮助”的选项卡,将组件模板和数据加载到仪表板模板的旁边,而不是覆盖它。
  3. 我想自由地跳过标签,基本上显示/隐藏发生在那里的内容上。仅当我在选项卡中按 x 时,选项卡及其内容才会从 DOM 中删除。
  4. Url 代表你在哪里,如果我在仪表板中:localhost/dashboard,如果我在帮助中:localhost/help。

使这成为现实的最佳选择是什么?

我可以使用路由器链接以某种方式设置此系统,还是应该在 SidebarComponent 中创建一个函数,该函数读取我单击的元素,获取其属性“data-href”,然后以某种方式手动初始化组件加载/路由更改?

一些非常基本的 plunker 在行动中展示了这一点将是神圣的!

ps 我研究的主要是 DynamicComponentLoader(DCL),但现在已弃用,取而代之的是 ElementRef 和 ViewContainerRef ( http://blog.lacolaco.net/post/dynamic-component-creation-in-angular-2/ ) ,但我找不到足够合适的示例来理解如何将其应用于我的情况。

然而,这有点接近我所需要的——http code there->: //plnkr.co/edit/MMy3azc4ksQOH6ezZIG5 ?p=preview 。它按需加载组件,然后简单地重用它们(显示/隐藏)。但它似乎是建立在旧的路由器弃用模块上的。

4

0 回答 0