架构是这样的:
<custom-header></custom-header>
<router-outlet></router-outlet>
<custom-sidebar></custom-sidebar>
custom-header
和custom-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更好的解决方案。
非常感谢。