我的父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/

10-10 00:40