[英]Angular ngOnInit() property don't upate value
我有两个角度方法来检查角色和权限。如果这些条件之一为真,则该值分配给组件中的 managePermsission 布尔属性。 这是服务中的两种方法:
checkProjectManagePermission(): Observable<boolean> {
const currentLoggedUser = this.authService.getCurrentLoggedInUser();
const reqUrl = `${currentLoggedUser.mPortalWebApi}${CONST.ctrlUrl.projects}/check-project-manage-permission`;
return this.http.get(reqUrl).pipe(
map((response: any) => response),
catchError((error) => _throw(error)),
);
}
checkProjectUserRoles(): Observable<boolean> {
const currentLoggedUser = this.authService.getCurrentLoggedInUser();
const reqUrl = `${currentLoggedUser.mPortalWebApi}${CONST.ctrlUrl.projects}/${this.projectId}/check-project-user-roles`;
return this.http.get(reqUrl).pipe(
map((response: any) => response),
catchError((error) => _throw(error)),
);
}
这是组件中的代码。 如果此方法中的某些方法返回 true,我想将属性 projectManagePermssions 设置为 true,但第二种方法始终将 projectManagePermssions 设置为 false,尽管服务响应返回 true 值。
projectManagePermissions = false;
ngOnInit() {
this.showLoader = true;
this.checkProjectManagePermission();
if (!this.projectManagePermissions)
this.checkProjectUserRoles();
}
private checkProjectManagePermission() {
this.projectManagementService.checkProjectManagePermission()
.pipe(takeUntil(this.observablesDispose$))
.subscribe(
(response) => {
this.projectManagePermissions = response
}
)
}
private checkProjectUserRoles() {
return this.projectManagementService.checkProjectUserRoles()
.pipe(takeUntil(this.observablesDispose$))
.subscribe(
(response) => {
this.projectManagePermissions = response
}
)
}
我在代码中遗漏了什么? 提前致谢 !
尝试这个。
projectManagePermissions = false;
ngOnInit() {
this.showLoader = true;
this.checkProjectManagePermission();
}
private checkProjectManagePermission() {
this.projectManagementService.checkProjectManagePermission()
.pipe(takeUntil(this.observablesDispose$))
.subscribe(
(response) => {
this.projectManagePermissions = response;
if (!this.projectManagePermissions) {
this.checkProjectUserRoles();
}
}
)
}
private checkProjectUserRoles() {
return this.projectManagementService.checkProjectUserRoles()
.pipe(takeUntil(this.observablesDispose$))
.subscribe(
(response) => {
this.projectManagePermissions = response
}
)
}
这是一个异步问题。 ngInit 在 checkProjectManagePermission() 之前完成。 在 ngOnInit 中订阅 checkProjectManagePermission()。
为确保您不会出现内存泄漏,请将 checkProjectManagePermission() 分配给一个变量,然后在 ngOnDestroy 中调用取消订阅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.