我的父AppComponent带有路由登录名,主页等名。当用户使用凭据登录时,我将用户凭据保存在Sessionstorage中。登录成功后,我想在AppComponent.html的 header 中显示数据的一部分,所以我必须从seesionstorage获取getItems。如何触发事件以从LoginComponent通知AppComponent?我正在使用路由器 socket ,所以无法使用EventEmitter。我可以使用BehaviourSubject,但是AppComponent中没有有效的方法可以调用。
请提出建议。
最佳答案
为此使用通讯服务:
CommunicationService.ts
@Injectable()
export class CommunicationService {
constructor() { }
private emitChangeSource = new Subject<any>();
changeEmitted$ = this.emitChangeSource.asObservable();
emitChange() {
this.emitChangeSource.next();
}
}
login.ts:
constructor(
private communicationService: CommunicationService
) {
}
login(){
this.communicationService.emitChange()
}
AppComponent.ts:
constructor(
private communicationService: CommunicationService,
) {
communicationService.changeEmitted$.subscribe(data => {
// here fetch data from the session storage
})
}
希望这可以帮助。
关于 Angular :通过路由器导出将数据或事件从子级传递到父级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48901589/