我有一个Angular应用程序,我想在成功登录后触发一个函数。
验证服务非常简单。
看起来像这样:
@Injectable()
export class AuthenticationService {
isLoginSubject = new BehaviorSubject<boolean>(this.hasToken());
constructor(
private http: HttpClient
) { }
login(username: string, password: string) {
localStorage.setItem('user', username);
return this.http.post(PROD_URL, {username: username, password: password})
.map(response => {
if (response && response['token']) {
localStorage.setItem('userToken', 'Token ' + response['token']);
this.isLoginSubject.next(true);
}
console.log(response);
return response;
});
}
logout() {
localStorage.removeItem('userToken');
this.isLoginSubject.next(false);
}
isLoggedIn() {
return this.isLoginSubject.asObservable();
}
private hasToken(): boolean {
return !!localStorage.getItem('userToken');
}
}
我只有一个包含用户名和密码的登录对话框,登录成功后我想发起一个事件。
该功能如下所示:
getEvents() {
this.rest
.getEvents()
.subscribe(
data => {
this.store.dispatch(new AddEventsAction(data));
},
(err: HttpErrorResponse) => {
console.log(err.status);
},
() => console.log('Done')
);
}
现在我的问题如下:
当我登录时,我的屏幕会显示,但我的事件不在那里。如果我使用F5或浏览器刷新页面,则会显示事件。
如何获取事件并显示它们而无需重新加载页面?