![](/img/trans.png)
[英]ngRx Store - Reducer returns undefined - store.select() is undefined
[英]Public get returns a permission boolean from auth service, which is initialized to false and modified when NGRX store returns a value but is UNDEFINED
我有一個Angular7應用程序,我選擇根據定義為以下內容的布爾值在app.component中顯示一個按鈕:
get superUser(): boolean {
return this.auth.userPermissions.SUPER_USER;
}
現在,在我的身份驗證服務中,我在Permissions模型之后初始化了userPermissions,並將所有權限標記為'false'。
permissions: Permissions = {
SUPER_USER: false,
CLIENT_ADMIN: true,
ADD_CLIENT: false,
ADD_USER: false,
DELETE_CLIENT: false,
DELETE_USER: false,
READ_ALL_CLIENTS: false,
READ_ALL_USERS: false,
READ_REPORTS: false,
READ_USERS: false,
UPDATE_CLIENT: false
};
public get userPermissions(): Permissions {
return this.permissions;
}
在Authentication上,將權限數組發送到reducer,並使用ngrx store設置權限。
.subscribe((token: string) => {
Cookie.set('access_token', token);
this.store.dispatch(new UserActions.SetUser(this.currentUser));
const currentUser = this.helper.decodeToken(token);
this.store.dispatch(
new PermissionsActions.SetPermissions(currentUser.permissions)
);
return this.router.navigate(['']);
});
在該服務中,我正在訂閱該存儲值並更新權限對象。
this.permissionSubscription = this.store
.select('permissions')
.subscribe(permissions => {
this.permissions = permissions;
});
現在的麻煩是,認證之后的第一次,整個事情崩潰了:
Cannot read property 'SUPER_USER' of undefined
引用定義吸氣劑的那一行。
但是到處都有定義。 我的代碼中沒有一個地方,我尚未初始化並使用默認值“ false”定義了模型變量。
在我的reducer中處理權限數組:
const keys: string[] = Object.keys(state);
for (const permission of action.permissions) {
if (keys.includes(permission.name)) {
state[permission.name] = true;
} else {
return console.log('ELSE BLOCK FIRING');
}
}
return tassign(state);
似乎我忘記了使用該數組中的權限來更新模型,並且當for循環達到該權限時,整個狀態變得不確定。
最終變成了reducer shenanigans,其中一個函數試圖使用不存在的屬性來做某事,每次都將init上的整個對象弄亂了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.