【问题标题】:Setting and Getting variables within a subscribe method在订阅方法中设置和获取变量
【发布时间】:2019-02-05 05:29:07
【问题描述】:

我刚开始学习 Angular,但我对如何让它在以下场景中工作感到有些困惑。假设 service.ts 中的响应返回一个非 0 的数字(即应设置自定义错误消息):

service.ts

errorMessage: string = "";

setErrorMessage(message:string){
    this.errorMessage = message;
}

getErrorMessage(){
    return this.errorMessage;
}

setRegistrationData(provider, email){
   this.login.accountExist(provider, email).subscribe( (response: UserCount) => {
      if (response.count == 0) {
         //do something
         return true;
      }else{
         this.setErrorMessage("Custom Error Message");
         return false;
      }
}

组件.ts

  errorMessage = "";

  sendData(){
    if(this.register.setRegistrationData(provider, email)){
      //do something
    }else{
      this.errorMessage = this.service.getErrorMessage();
      console.log(this.errorMessage); //Empty
      console.log(this.service.getErrorMessage()); //Empty
      console.log("Catastrophic Failure");
    }
  }

component.html

<input type="submit" (click)="sendData();" />
<div>{{errorMessage}}</div>

所以我了解到service.ts中errorMessage的设置是在通过subscribe方法得到component.ts中的errorMessage之后完成的。这是通过控制台日志测试的,在打印“灾难性错误”之前给出了两个空行。

将自定义错误消息传递到模板的最佳方式是什么?

提前致谢

【问题讨论】:

  • 当数字不为0时,响应的状态是否不同于成功?
  • 不太清楚你的意思。假设响应输出值 {count: 1},然后,它在该时间点将服务中的 errorMessage 设置为“自定义错误消息”。然后它返回false。请您进一步澄清一下吗?
  • 我说的是http状态,但这里好像不是这样。

标签: angular


【解决方案1】:

所以在考虑了我想要实现的目标之后,我只是将订阅方面移到了 component.ts 并让 component.ts 处理与错误消息有关的任何事情,从而解决了整个问题。

本质上,service.ts 应该执行并返回 HTTP 请求,其中 component.ts 订阅它并处理逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多