绑定按钮点击服务方法angular2+;

绑定按钮点击服务方法angular2+;,angular,Angular,我在我的auth服务中有一个logout方法。我正试着从一个电话亭打电话 组件,但这似乎不起作用 模板 注销 组成部分 从“../../\u services/auth.service”导入{AuthService}; 建造师( 公共身份验证:身份验证服务 ) {} 身份验证服务 公共注销(){ 返回this.http.post(this.apiHost+'/users/logout',{}) .map(()=>{ localStorage.removietem('currentUser')

我在我的
auth
服务中有一个
logout
方法。我正试着从一个电话亭打电话 组件,但这似乎不起作用

模板

注销
组成部分

从“../../\u services/auth.service”导入{AuthService};
建造师(
公共身份验证:身份验证服务
) {}
身份验证服务

公共注销(){
返回this.http.post(this.apiHost+'/users/logout',{})
.map(()=>{
localStorage.removietem('currentUser');
this.router.navigate(['/']);
this.alertService.warning('您已注销',true)
})
.接住(这个.把手错误);
}

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

您可以从
注销
函数返回
可观察的
。但是调用这个函数并不意味着从可观察对象订阅

尝试添加
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();
}
公共注销(){
返回this.http.post(this.apiHost+'/users/logout',{})
.map(()=>{
localStorage.removietem('currentUser');
this.router.navigate(['/']);
this.alertService.warning('您已注销',true)
})
.接住(这个.把手错误)
.subscribe();
}

您可以从
注销
功能返回一个
可观察的
。但是调用这个函数并不意味着从可观察对象订阅

尝试添加
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();
}
公共注销(){
返回this.http.post(this.apiHost+'/users/logout',{})
.map(()=>{
localStorage.removietem('currentUser');
this.router.navigate(['/']);
this.alertService.warning('您已注销',true)
})
.接住(这个.把手错误)
.subscribe();
}

尝试在服务方法中添加一些控制台日志。它们根本没有被调用。@pengyy为什么去掉语法突出显示?尝试在服务方法中添加一些控制台日志。它们根本没有被调用。@pengyy为什么去掉语法突出显示?在模板的末尾添加一个
.subscribe()
就成功了。
(单击)=“auth.logout().subscribe()”
在模板的末尾添加一个
.subscribe()
就成功了。
(单击)=“auth.logout().subscribe()”