在App和自制的Angular Library之间共享数据

时间:2017-11-10 12:58:31

标签: angular

架构是这样的:

<custom-header></custom-header>
<router-outlet></router-outlet>
<custom-sidebar></custom-sidebar>

custom-headercustom-sidebar都是使用angular-library-starter的自制库。出于项目相关的原因,我需要创建这些功能库而不是简单的组件。

在管理图书馆和应用程序之间的数据流时,事情变得越来越困难,因为所有3个人都没有生活在同一个项目中。它们中的每一个都是分开的文件夹,我需要使用npm run build编译每个库并使用新创建的bundle.js,以使custom-*适用于主应用程序。

主应用是LoginComponent所在的位置。此LoginComponent包括将对用户进行身份验证的登录表单和登录功能。

custom-header是标头模板的位置。它应该在用户登录时进行可视化更新。这是custom-header

<header >
  <user-details *ngIf='isLogin' ></user-details>
  <user-authentication *ngIf='!isLogin'></user-authentication>
</header>

用户详细信息将在用户登录时显示。用户未登录时将显示身份验证。 但是,我无法设法使login()函数(位于主应用程序中)与custom-header共享数据,因此无法更新isLogin。

我认为发射器仅适用于父级&gt;子组件。共享服务似乎是一个很好的解决方案,但由于每个3个标记不是生活在同一个环境中,我无法弄清楚如何这样做。

我试过的是:

// header library
private ngDoCheck() {
  // Check is user is login
  if (localStorage.getItem("token") != null) {
    this.isLogin = true;
  }
}

它似乎有效,但我相信有比ngDoCheck更好的解决方案。

非常感谢。

0 个答案:

没有答案