Angular控制台数据显示为空

时间:2019-03-26 17:38:25

标签: angular

我对自己遇到的问题感到非常困惑。我正在尝试将模型发送到发布请求。但是,当我在浏览器中console.log退出模型时,会看到以下内容。

enter image description here

如果我随后通过单击箭头来扩展控制台结果,则会看到

r

我的请求失败,因为它看到空值,但实际上有数据。请协助。

我的请求看起来像这样

const token = localStorage.getItem('token');
const headers = new HttpHeaders()
  .set('Authorization', `Bearer ${token}`)
  .set('Content-Type', 'application/json');
const options = { headers: headers };
console.log(this.model);
this.http.post('https://localhost:44345/api/Corporates/Create', this.model, options)
.subscribe(data => {
  console.log(data);
})

型号

  protected initModel() {
    this.model = {
      basics: null,
      retirements: null,
      risk: null,
      users: null
    };
  }

人口模型

  saveTemp( args: { tabName: string, tabModel: any } ) {
    switch (args.tabName) {
      case 'basics': {
        this.model.basics = args.tabModel;
        // console.log(this.model.basics);
        break;
      }
      case 'retirement': {
        this.model.retirements = args.tabModel;
        break;
      }
      case 'risk': {
        this.model.risk = args.tabModel;
        break;
      }
      case 'users': {
        this.model.users = args.tabModel;
        break;
      }
      default: {
        break;
      }
    }
  }

2 个答案:

答案 0 :(得分:1)

似乎您要将默认的空值传递给模型

和saveTemp()中 您可以将值分配给局部变量,而不会将变量分配给模型。

您可以尝试这样的事情吗?

protected initModel() {
    this.model = {
      basics: this.model.basics
      retirements: this.model.retirements
      risk:  this.model.risk
      users: this.model.users
    };
  }

答案 1 :(得分:1)

很有可能当您console.log(this.model);时,模型对象是默认对象(全为null),因此您可以看到所有null值而无需在控制台中扩展该对象。之后,您将模型数据发布到API,并且服务器正在接收空值。 (如果在this.http.post处设置一个断点,然后在控制台中扩展对象,那么也会看到所有null。)

我认为您的saveTemp函数的“基本”情况是在调用API后触发的,因此在扩展对象后,您会在控制台中看到值(如果对象内容在控制台中打印后正在更新,则您通过扩展就可以看到更新。)

确保在此模型更新后调用API。