登录后的角度触发功能

时间:2018-05-25 12:19:00

标签: angular typescript service login routing

我有一个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或浏览器刷新页面,则会显示事件。

如何获取事件并显示它们而无需重新加载页面?

0 个答案:

没有答案