angular - 组件中未定义的角度服务对象
问题描述
我正在使用 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 未定义。
谁能告诉我为什么?以及如何解决这个问题?
解决方案
推荐阅读
- scala - 如何使用 Scala 在具有请求正文的 REST API 上执行 GET 请求?
- webhooks - Rundeck 接收 Token 未授权 webhook 消息
- unit-testing - 使用 Jest 和 Enzyme 的 React-native 测试不调用 prop 函数
- javascript - 导入电子表格的区域并将其导入另一个电子表格的列
- javascript - Javascript日期时间格式
- tfs - 无法将 TFS 升级到 Azure DevOps Server 2019,因为检测到 Sharepoint 扩展
- angular - 如何使用单选按钮动态过滤 ngFor 表行
- python - 过滤,返回输入列表中包含指定键的所有字典的列表:值对
- go - Flutter,在 prebuild GO .so 库上使用 DynamicLibrary.open() 而无需编写 Native Code(Java/Swift)
- php - Laravel 登录后立即注销用户