Я пытаюсь внедрить навигационную панель, которая показывает разные ссылки на основе того, вошел ли пользователь в систему.Запустить обновление компонента в Angular 2
Я использую библиотеку angular2-jwt
, которая предоставляет функцию tokenNotExpired()
.
У меня есть 2 маршрута, /home
и /login
. У меня есть компонент navbar, который находится за пределами <router-outlet>
, что означает, что он инициализируется только один раз, а не каждый раз, когда маршрут изменяется.
После успешного входа в систему я вызываю router.navigate(['/home])
. У дома и входа в систему есть проверки, если пользователь выполнил вход в свои соответствующие функции ngOnInit()
. Поэтому домашний компонент способен обнаруживать зарегистрированного пользователя.
Однако я не могу обновить навигатор, так как он не информирован о логине.
Может ли кто-нибудь сказать мне правильный способ реализовать это обнаружение изменений?
Спасибо.
Спасибо Sefa. Поскольку я использую библиотеку 'angular2-jwt', поэтому я заменил' userLoggedIn: bool = false; 'и функцию изменения с помощью функции, которая возвращает вывод' tokenNotExpired() '. –
Это действительно работает. Тем не менее, вы получаете доступ к переменной службы непосредственно из представления, например: '[hidden] ="! AuthService.userLoggedIn "'. Это действительно правильный способ сделать это (я так не думаю)? Разве мы не должны использовать BehaviorSubject и распространять изменения и подписываться на них через Navbar? – Devner