【问题标题】:Angular 11 HttpClient Generic Observable map service values into a ClassAngular 11 HttpClient Generic Observable 将服务值映射到一个类中
【发布时间】:2020-11-28 03:39:54
【问题描述】:

我正在使用 .net 中的 POST 服务,它返回下一个结构,该服务正确返回数据

enter image description here

public sendExcelInBase64ToBackEnd(data: any) {
    this.customOptions = {
        headers: this.customHttp.buildHeader(),
    };

    this.customHttp.Post<SerialResultDTO>('/serialsExcel', data, this.customOptions).subscribe(val => { // <- val data returns ok
        this.serialResult = val;
        let x = this.serialResult.Success;
        console.log(x);
        console.log(val.Success); // <- prints undefined
    })
    
    return null;
}

当我尝试在控制台 'val.Success' 中打印时,它会打印 undefined!!,为什么会发生这种情况??

我想将所有属性分配给 angular 中的自定义类,但在 chrome 调试中它显示对象数据,但在分配给我的模型类时它变得未定义!!

谁能帮帮我!!我很感激!

【问题讨论】:

  • 嗨,克里斯,您的 val 是否有 Success 属性。它将尝试将其序列化为SerialResultDTO,以便应该具有Success 属性。
  • 嗨 John,是的 SerialResultDTO 有 Success 属性,但错误是拼写错误,http 服务以小写形式返回,就像 moxximanagarm 说的那样。

标签: node.js angular observable httpclient subscribe


【解决方案1】:

您的图像显示小写 success,但您尝试记录一个标题大写 Success。改为

public sendExcelInBase64ToBackEnd(data: any) {
    this.customOptions = {
        headers: this.customHttp.buildHeader(),
    };

    this.customHttp.Post<SerialResultDTO>('/serialsExcel', data, this.customOptions).subscribe(val => {
        this.serialResult = val;
        let x = this.serialResult.success;
        console.log(x);
        console.log(val.success);
    })
    
    return null;
}

【讨论】:

  • 感谢 moxximanagarm 你是正确的,服务返回小写,我改变了它,它现在可以工作了!!!
  • 嗨@Chris。 R.,很高兴您得到了所需的答案,您可能想将答案标记为已接受和/或投票?这将激励其他人留出更多时间来回答问题和互相帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2018-12-14
  • 2018-09-04
相关资源
最近更新 更多