【问题标题】:Angular, Error: First argument contains NaN in property角度,错误:第一个参数在属性中包含 NaN
【发布时间】:2018-06-19 03:24:04
【问题描述】:

我正在制作一个简单的计算公式来计算百分比。但我收到一个错误,上面写着First argument contains NaN in property 'percent.percentKey.percentMale。我正在使用 Angular 和 Typescript 和 Angularfire 将数据存储到数据库中。我在一个类中定义了属性。

//app.ts
export class App {
  $key: string;
  gender: string;
  male: number = 0;
  female: number = 0;
  percentMale: number = 0;
  percentFemale: number = 0;
}


//app.service.ts
insertdata(data: App) {
  this.dataList.push({
    gender: data.gender,
  });

  if (data.gender == 'Male') {
    //this.male ++;
    data.male = data.male++
  } else if (data.gender == 'Female') {
    //this.female ++;
    data.female = data.female++
  }

  data.percentMale = data.male / (data.male + data.female) * 100
  console.log('male', data.male + '%');

  data.percentFemale = data.female / (data.male + data.female) * 100
  console.log('female', data.female + '%');
  
  console.log('1', data.percentMale); //it returns NaN
  console.log('2', data.percentFemale); //it returns NaN

  this.percentList.update("percentKey", {
    percentMale: data.percentMale,
    percentFemale: data.percentFemale
  })
}

我已经在服务中导入了类,并在 component.ts 中调用了insertdata 函数,如this.AppService.insertpertanyaan(this.AppService.selectedpertanyaan);。 任何人都可以帮助我吗?如果需要更多的 sn-ps,请告诉我。谢谢。

【问题讨论】:

  • 可以除以零吗?也许data.percentMale + data.female 为零。您可以将该值记录到控制台。
  • 我更新了我的代码
  • 你的问题是data.percentMaleNaN吗?
  • 它仍然返回错误First argument contains NaN in property 'percent.percentKey.percentMale
  • 你可以在this.percentList.update(...)之前检查console.log("data.percentMale", data.percentMale);

标签: angular typescript firebase angularfire2


【解决方案1】:

这些行有问题:

data.male = data.male++;
data.female = data.female++;

他们应该是:

data.male++;
data.female++;

当您使用后缀递增运算符x++ 时,x 的值会递增,但表达式会返回 x 的前一个值。当你这样做时

x = x++;

x 首先递增,然后将其先前的值分配给 x。结果,x 又回到了原来的值。

【讨论】:

  • 感谢您的帮助:D
  • 如果我可以再问一个问题 Mr.ConnorsFan,为什么当我重新加载页面或 localhost 并再次插入数据时,percentMale 和 percentFemale 的值又变成了 0。例如我插入一个新的男性,当数据库中已有数据时,它变为男性 1 和女性 0。
  • 我不知道你到底想做什么,但我想你需要先从数据库中获取以前的数字,然后再添加到它们。
猜你喜欢
  • 2015-01-31
  • 2018-10-05
  • 2018-04-26
  • 1970-01-01
  • 2018-02-22
  • 2015-11-06
  • 2020-04-07
  • 2021-02-12
  • 1970-01-01
相关资源
最近更新 更多