Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在得到正确响应或错误的情况下,如何在订阅响应中实现操作?_Angular_Subscribe - Fatal编程技术网

Angular 在得到正确响应或错误的情况下,如何在订阅响应中实现操作?

Angular 在得到正确响应或错误的情况下,如何在订阅响应中实现操作?,angular,subscribe,Angular,Subscribe,我正在尝试向登录函数添加加载微调器。我已经创建了一个名为“loading”的变量,我希望当我从服务器(而不是之前)获得响应时,这个变量会变为false(在html中为disapear)。我使用下一个函数获得结果,将两个响应(正确响应和错误响应)中的变量都更改为false,但我想知道是否有更干净的方法来实现这一点 谢谢大家! login() { this.loading = true; let model: UserLogin = Object.assign({}, this.fo

我正在尝试向登录函数添加加载微调器。我已经创建了一个名为“loading”的变量,我希望当我从服务器(而不是之前)获得响应时,这个变量会变为false(在html中为disapear)。我使用下一个函数获得结果,将两个响应(正确响应和错误响应)中的变量都更改为false,但我想知道是否有更干净的方法来实现这一点

谢谢大家!

login() {
    this.loading = true;
    let model: UserLogin = Object.assign({}, this.formGroup.value);
    this.accountService.login(model)
      .subscribe(
        token => {
          this.setToken(token);
          this.loading = false;        
        },
        error => {
          alert(this.errorService.manageError(error)[""]);
          this.loading = false;
        }
      );
    }
您可以使用RxJS操作符。它将在完成和观察到的错误时触发

从“rxjs/operators”导入{finalize};
登录(){
这是。加载=真;
let model:UserLogin=Object.assign({},this.formGroup.value);
这个.accountService.login(model.pipe(
完成(()=>this.loading=false)
).订阅(
令牌=>{
this.setToken(token);
},
错误=>{
警报(this.errorService.manageError(error)[“”]);
}
);
}

这太棒了!非常感谢你!!