所以我已经阅读,但没有找到解决我的问题的方法。我的问题正如我的标题所要求的那样。
这是我的问题,我创建了 2 个组件(NavbarComponent 和 HomepageComponent)。NarbarComponent 嵌套在 AppComponent 中并处理身份验证,而 HomepageComponent 是启用路由的组件和应用程序的默认页面。
我想要做的是能够使用像 Auth0 这样的身份验证服务通过单击导航栏中的登录按钮(NavbarComponent)来对用户进行身份验证,然后在主页(HomepageComponent)上呈现他/她的个人资料。反之亦然,当我单击注销按钮时,应该删除用户的个人资料内容。
我尝试配置一些架构,但无济于事。首先,我尝试使用共享服务将 NavbarComponent 转换为 HomepageComponent,但它仅在重新加载页面时更新 HomepageComponent。
我尝试在 AppComponent 和 NavbarComponent 之间使用共享服务,然后使用@Input()从父级传输到子级,即 HomepageComponent。
然后我在 AppComponent 和 HomepageComponent 之间运行共享服务时尝试了从 NavbarComponent 到 AppComponent 的@Output()和 EventEmitter。
任何信息或见解将不胜感激!!
更新
主页组件
import { Component, OnInit } from '@angular/core'
import { Authenticated } from '../definitions/authenticated'
import { AuthCheckService } from '../shared/auth-check.service'
@Component({
selector: 'afn-homepage',
templateUrl: './homepage.component.html'
})
export class HomepageComponent implements OnInit{
private authenticated: Authenticated;
isAuthenticated: boolean;
profile: any;
constructor(public authCheckService: AuthCheckService) { }
ngOnInit() {
this.authCheckService.getAuthenticated().subscribe(authenticated => {
console.log('Receiving auth info in home component from navbar component');
this.authenticated = authenticated;
this.isAuthenticated = this.authenticated.isAuthenticated;
this.profile = this.authenticated.profile;
});
}
}
我试着在这里做一个plunker。我无法加载它,但它确实包含大部分代码和 AuthService 的模拟。