首页 > 解决方案 > 错误类型错误:“this.authenticatedUser 未定义”

问题描述

对不起,我是法国人.. 这是我的问题:

应用组件.ts

import { Component, OnInit, HostListener } from '@angular/core';
import { environment } from '../environments/environment';
import { AuthOidcService, AuthUser } from '@cddng/auth-oidc-apim';
import { AuthService } from './service/auth.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
  appName: string;
  authenticatedUser: AuthUser;

  constructor(private auth: AuthService, private oidcAuth: AuthOidcService) {
    this.appName = environment.application_name;
    this.oidcAuth.init(environment.auth_oidc_config);
  }

  ngOnInit() {
    this.oidcAuth.login();

    this.oidcAuth.oidcSecurityService.getIsAuthorized().subscribe((authorized: boolean) => {
      if (authorized) {
          this.authenticatedUser = this.oidcAuth.getAuthenticatedUserFromJwt();
      }
  });
  this.auth.idRh = this.authenticatedUser.idRh;
  this.auth.role = this.authenticatedUser.roles;
  console.log("*******************************************");
  console.log("idrh => " + this.auth.idRh);
  console.log("Roles => " + this.auth.role);
  console.log("isAdmin => " + this.auth.isAdmin);
  console.log("isExpert => " + this.auth.isExpert);
  console.log("isConsult => " + this.auth.isConsultation);
  console.log("*******************************************");

  }




  @HostListener('window:UserDisconnected') userDisconnected() {
    this.oidcAuth.corpHeaderLogout();
  }



}

而控制台上的这个错误: ERROR TypeError: "this.authenticatedUser is undefined"

当我刷新页面时,没关系,但不是第一次

我认为这是异步的问题,但我没有解决方案

谢谢您的回答

标签: angulartypescript

解决方案


您需要在 中移动以下行subscribe

this.auth.idRh = this.authenticatedUser.idRh;
this.auth.role = this.authenticatedUser.roles;

由于订阅是异步的,所以需要等待返回值才能使用。


推荐阅读