微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular / Typescript-布尔变量不在.subscribe上更新

如何解决Angular / Typescript-布尔变量不在.subscribe上更新

我在服务器端具有此功能,暂时被迫返回true:

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
        [HttpGet("cPasaajefeVentas")]
        public async Task<IActionResult> CPasaajefeVentas(string idPais,string idCompania,string idSalesorg,string idDivision,string idUser,decimal porcentaje)
        {
          
            return Ok(true);

        }

这是您在服务内部的客户端上调用它的方式:

cPasaajefeVentas(idPais: string,idCompania:string,idSalesOrg:string,idDivision:string,idUser:string,porcentaje:number) {
        return this.http.get(this.altapedidosserveruri + 'cPasaajefeVentas?=' + idPais + '&idCompania=' + idCompania + '&idSalesOrg=' + idSalesOrg + '&idDivision=' + idDivision + '&idUser=' + idUser + '&porcentaje=' + porcentaje);
    }

这是我现在遇到问题的地方:

 cPasaJefeVentas(): boolean {
    let descuentodiscrecional: number = 5;
    let res: boolean = null;
    this.altaPedidosService
      .cPasaajefeVentas(this.pedidoObjeto.idPais,this.pedidoObjeto.idCompania,this.pedidoObjeto.idSalesOrg,this.pedidoObjeto.idDivision,this.loggedService.logged.UserName,descuentodiscrecional)
      .subscribe((result: boolean) => (
        console.log(result),res = result
      ))
    return res;
  }

console.log(result)打印TRUE,这是正确的,但是我想将返回的值赋给“ res”变量,并且它不起作用,因为退出.susbscribe时它仍然为null。 / p>

我想知道我在这里做错了什么吗?为什么“ res”变量的值不像应该更新的那样?

解决方法

您的服务正在返回可观察的响应。 可观察对象是异步的,您不能保证何时收到响应。因此,修改您的方法以返回 Observable 响应。您的代码将像这样被修改

 cPasaJefeVentas(): Observable<boolean> {
    let descuentoDiscrecional: number = 5;
    let res: boolean = null;
    let response$ = this.altaPedidosService
      .cPasaAJefeVentas(this.pedidoObjeto.idPais,this.pedidoObjeto.idCompania,this.pedidoObjeto.idSalesOrg,this.pedidoObjeto.idDivision,this.loggedService.logged.UserName,descuentoDiscrecional)
      .subscribe((result: boolean) => (
        console.log(result),res = result
      ));
      
      return response$;
  }

在模板中,您可以应用 async 管道以显示可观察的值,例如

<p>{{cPasaJefeVentas() | async}}</p>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?