У меня есть кнопка на панели навигации (app.component.html), которую я хочу показывать только при входе пользователя. Это мой текущий подход, который не работает для очевидные резоны объясняются позже. Я хочу, чтобы узнать, как я могу модифицировать его для работыУгловая 2 - Обновить вид при изменении переменной
Внутри моей app.component.html я кнопка включения
следующей<button *ngIf="isCurrentUserExist">MyButton</button>
Внутри моего app.component.ts, я пытаюсь объять переменная isCurrentUserExist для функции, которая возвращает true, если пользователь существует. Я считаю, что это проблема, потому что этот код выполняется только один раз в OnInit, как противостоять какой-то образом сохраняя вид обновленный
ngOnInit() {
this.isCurrentUserExist = this.userService.isCurrentUserExist();
}
Для referenrce, в моем UserService.ts экспорта класс UserService {
private currentUser: User
constructor(private http: Http,private angularFire: AngularFire) { }
getCurrentUser(): User {
return this.currentUser
}
setCurrentUser(user: User) {
this.currentUser = user;
}
isCurrentUserExist(): boolean {
if (this.currentUser) {
return true
}
return false
}
}
Abit больше информации о моем приложении ... При запуске, когда пользователь не существует, у меня есть экран входа в систему (компонент входа). Когда пользователь входит в систему, он идет к firebase и захватить информацию о пользователе (асинхронной) и сохранить его в моей службе пользователя через
setCurrentUser(user: User)
Так что на данный момент, я хотел бы обновить кнопку в моей панели навигации (который существует в app.component.html) и покажите кнопку.
Что я могу сделать для этого?
Hi Тьеп. Спасибо за это. Он работает очень хорошо. Раньше я думал о линии излучателя событий. Тем не менее, я не хотел использовать его, если я не отчаялся, потому что он чувствует, что сигналы пролетают по воздуху, ожидая, когда кто-то схватит его (вроде напоминания толчка). Этот BehaviorSubject действительно похож на какой-то эмитент событий? Знаете ли вы, есть ли другой подход (для целей обучения) – user172902
, вы можете создать собственную систему эмиттеров событий (возможно, базу на наблюдаемом), а затем где-нибудь вы можете подписаться на какое-то событие, например «user.login» (Ionic 2 собственная система событий). всякий раз, когда событие срабатывает, вы получите ценность - полезную нагрузку - чтобы делать все, что вам нравится. –