На самом деле, принимая новый проект на Angular, обнаружил проблему при попытке загрузить заголовок и меню в файле app.component. Кажется, что они не загружаются полностью или не взаимодействуют с необходимым сервисом. Функция проверяет, разрешено ли пользователю видеть некоторые кнопки интерфейса, но она не работает без перезагрузки (да, после перезагрузки страницы она работает). Не понимаю, что терпит неудачу.
Попытка установить компоненты в массиве компонентов ввода, но не работает.
Функция проверки прав доступа
isAllow (action) {
let checked = false;
if( localStorage.getItem ('allow')){
let stored = JSON.parse(atob(localStorage.getItem('allow')))['permissions'];
if(stored.includes(action))checked=true;
}
return checked;
}
как компоненты называются в моем app.component
<app-header></app-header>
<div id="main" class="grey lighten-4">
<div class="wrapper">
<app-breadcrumb></app-breadcrumb>
<app-alert></app-alert>
<router-outlet></router-outlet>
<app-menu></app-menu>
</div>
</div>
<app-footer></app-footer>
login (username: string, password: string) {
return this.http.post<any>(Config.apiUrl + '/oauth', { grant_type: 'password', username: username, password: password, client_id: username }, httpOptions)
.pipe(map((res:any) => {
if (res && res.access_token) {
localStorage.setItem('currentAuth', btoa(JSON.stringify(res)));
var user:any = {"username":username};
localStorage.setItem('user', btoa(JSON.stringify(user)));
this.currentToken = res.access_token;
this.user.getAccountById(res.account_id).subscribe(e=>{
localStorage.removeItem('allow');
localStorage.setItem('allow',btoa(JSON.stringify({'id':res.account_id,'permissions':(e['type']==1?['1','2','3','4','5','6','7','8','9','10','11','12']:(e['levels']!=null?e['levels']:['0'])),'type':e['type'],'id_client':e['id_client']})));
this.loggedIn.next(true);
this.router.navigate(['']);
})
}
}));
}
Я ожидаю, что меню и заголовок успешно загрузят мои кнопки интерфейса при первой загрузке ... Не стесняйтесь спрашивать меня об этом (извините за мой английский)