绑定按钮单击服务方法angular2 +

时间:2018-02-05 02:17:55

标签: angular

我的logout服务中有auth方法。我试图用它来调用它  组件,但这似乎不起作用。

模板

<a class="dropdown-item" (click)="auth.logout()">Logout</a>

成分<​​/ P>

import { AuthService } from '../../_services/auth.service';

constructor(
    public auth:AuthService
  ) {}

身份验证服务

  public logout() {
    return this.http.post<any>(this.apiHost+'/users/logout', {})
    .map(() => {
      localStorage.removeItem('currentUser');
      this.router.navigate(['/']);
      this.alertService.warning('You have been logged out.', true)
    })
    .catch(this.handleError);
  }

我做错了什么?我是否需要调用本地函数而不是直接从模板调用auth?

1 个答案:

答案 0 :(得分:2)

您可以从Observable功能返回logout。但是调用这个函数并不意味着从Observable订阅。

尝试添加subscribe()进行订阅。

public logout() {
  return this.http.post<any>(this.apiHost+'/users/logout', {})
    .map(() => {
      localStorage.removeItem('currentUser');
      this.router.navigate(['/']);
      this.alertService.warning('You have been logged out.', true)
    })
    .catch(this.handleError)
    .subscribe();
}