Есть ли способ выполнить определенную услугу на раннем этапе? - PullRequest
0 голосов
/ 18 апреля 2019

На самом деле, принимая новый проект на 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(['']);
                    })
            }
        }));
    }

Я ожидаю, что меню и заголовок успешно загрузят мои кнопки интерфейса при первой загрузке ... Не стесняйтесь спрашивать меня об этом (извините за мой английский)

1 Ответ

0 голосов
/ 01 мая 2019

Наконец-то я решил проблему с другим компонентом.
Я создал свойства в своем сервисе с типом BehaviorSubject.
Затем в нужных мне компонентах:
-Я назначаю значения свойств сервиса длясвойства компонента
-В html я даю ngIf = "property".
Не знаю, есть ли лучший способ, но не нашел другого, спасибо всем за помощь, кстати.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...