如何在两个子 Angular2 组件之间共享父 HTML?

Posted

技术标签:

【中文标题】如何在两个子 Angular2 组件之间共享父 HTML?【英文标题】:How to share parent HTML between two child Angular2 components? 【发布时间】:2017-08-08 10:23:10 【问题描述】:

总的来说,我对 Angular 还是很陌生。我的应用程序有多个“页面(组件)”,它们都共享共同的东西——标题、页面的总体布局等。它们可以共享 css 和 html(而不是在每个组件中重复),但我不知道该怎么做。这基本上是我想做的:

<parentPage>
  <childPage1></childPage1>
</parentPage>

<parentPage>
  <otherChildPage></otherChildPage>
</parentPage>

谁能指出我正确的方向? “childPage1”和“otherChildPage”组件完全不同。一个有一堆链接,另一个是带有一些图像的格式化文本墙。但是这些组件之外的页面整体布局在两者之间是完全一样的。

【问题讨论】:

我想我可以将一个样式表导入到每个组件中。但这并不能解决共享 html 问题。 【参考方案1】:

Angular 是一个“单页应用程序”框架。 例如,如果您有一个登录页面,您的代码可能如下所示:

<html>
  <body>
    <header-component/>
    <login-component/>
  </body>
</html>

然后当用户登录 angular 时,删除 login-component 并将其替换为 profile-component

<html>
  <body>
    <header-component/>
    <profile-component/>
  </body>
</html>

这样您就只有 1 页,并且可以根据需要更换组件。我建议遵循 angular(2?) 教程,该教程将解释如何实现这一点。

【讨论】:

【参考方案2】:

您所期望的基本上是一个 SPA 网站。如果您的应用程序要进行通用 UI 查找, sol 1:在根 index.html 和根组件和子组件跟进您的主要查找 sol 2:将您的公共共享 html 作为父组件,然后将您的孩子作为 2 个小组件。所以总共你有3个组件。 sol 3:这种方法可以通过 UI-Routing 轻松实现 - 从 google 阅读和理解。

【讨论】:

【参考方案3】:

希望这个结构有意义

<parentPage>
  <container>
      <childPage1></childPage1>
      <otherChildPage></otherChildPage>
  </container>
</parentPage>

parentPage - 可以有你的共同布局

容器 - 可以让您的子组件在其中选择正确的子组件(这是在容器组件的相应 html 文件中完成的,您可以在其中使用 *ngIf 来选择要呈现的子组件)

【讨论】:

以上是关于如何在两个子 Angular2 组件之间共享父 HTML?的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度2中将数据从父构造函数传递到子组件

Angular 2.3 组件继承和依赖注入

Angular 2.3 组件继承和依赖注入

如果组件不是Angular2中的父子组件,如何在组件之间传递数据?

如何在多个 Angular 2 项目之间共享一个 Angular 2 组件?

如何从Angular2中的父组件获取子路由的:id参数