У меня угловая раскладка с верхним и нижним колонтитулом.Я хочу обновить загрузку навигационных меню в зависимости от роли пользователя, например, только для чтения или аналитика.Я увидел пост здесь на SO и скопировал код BehaviorSubject
для компонента заголовка, чтобы подписаться на логическое изменение в сервисе.Это работает, но я получил только одну кнопку входа, чтобы перейти на кнопку выхода.В моем коде компонента заголовка есть метод, который будет загружать меню в зависимости от роли пользователя.Он берет список путей к меню и загружает только те пункты меню, которые соответствуют роли пользователя.Таким образом, в дополнение к использованию *ngIf
для изменения скрытой базы при изменении подписанного логического значения, есть ли способ вызвать метод из подписанного изменения, когда компонент заголовка уведомлен о произведенном изменении?
Любойпомощь приветствуется.Спасибо.
Вот мой код компонента заголовка до сих пор:
export const ROUTES: RouteInfo[] = [
{ path: '/Home', title: 'Home', icon: '', class: '', role: 'all'},
// admin
{ path: '/change-role', title: 'Change Role', icon: '', class: '', role: 'admin'},
{ path: '/users', title: 'User', icon: '', class: '', role: 'admin'},
{ path: '/products', title: 'products', icon: '', class: '', role: 'admin'},
{ path: '/admin', title: 'Admin', icon: '', class: '', role: 'admin'},
];
constructor(private dataSharingService: DataSharingService, private loginService: LoginService, private router : Router) {
this.dataSharingService.isUserLoggedIn.subscribe( value => { this.isUserLoggedIn = value })
}
ngOnInit() {
//this.getLoginStatus();
this.loadMenus();
}
loadMenus()
{
var role = this.loginService.getUserRole();
if (role == 'admin') {
this.menuItems = ROUTES.filter(menuItem => menuItem.role == 'admin');
}
else if (role == 'analyst' || role == 'reviewer') {
this.menuItems = ROUTES.filter(menuItem => menuItem.role == 'reviewer');
}
else if (role == ' readOnly') {
this.menuItems = ROUTES.filter(menuItem => menuItem.role == 'readOnly');
}
}
}