首页 > 解决方案 > 组件中未定义的角度服务对象

问题描述

我正在使用 Angular 4 CLI 项目,我有角度服务、角度组件、拦截器、守卫和其他常规项目。

我的 Angular 服务组件有以下项目:

export class AdminAuthService {
   adminAuthContext: AdminAuthContext;
   constructor(private httpClient: HttpClient, private urlService: UrlService) {
      ... other code ...
      this.loadSecurityContext();
   }

   loadSecurityContext() {
    this.httpClient.get<AdminAuthContext>(`${this.urlService.url_authContext}`)
        .subscribe(context => {
            this.adminAuthContext = context;
        }, error => Utils.logErrorResponse(error));
    }
}

我的组件有以下代码:

export class ArticleManagerComponent{
   constructor(private route: ActivatedRoute, private articleService: ArticleService, private adminAuthService: AdminAuthService) {
   }
   isAdmin() {
      let canActivate = this.adminAuthService.adminAuthContext && this.adminAuthService.adminAuthContext.claims && (this.adminAuthService.adminAuthContext.claims.find(claim =>  claim.type === 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' && claim.value === 'Admin'));
      return canActivate;
   }
}

现在,我有 Component.Html

<div class="rightpane" *ngIf="isAdmin()">
<admin-article-edit [selectedArticleId]="articleEdit_articleId"></admin-article-edit>

现在,我通过我的 Login 组件调用 AdminAuthServie 并确保我设置了 aminAuthContext 对象。

现在,我调用 Article 组件,它调用 isAdmin 方法,在该方法中我得到 AdminAuthContext 未定义。

谁能告诉我为什么?以及如何解决这个问题?

标签: angularangular-servicesangular-componentsangular-httpclientangular-observable

解决方案


推荐阅读