Angular,Error:第一个参数在属性中包含NaN

时间:2018-01-10 02:01:02

标签: angular typescript firebase angularfire2

我正在制作一个简单的计算公式来计算百分比。但我得到了一个错误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
  })
}

我已经在服务中导入了该类,并在insertdata之类的component.ts中调用了this.AppService.insertpertanyaan(this.AppService.selectedpertanyaan);函数。 有人可以帮帮我吗?如果需要更多代码段,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:1)

这些行存在问题:

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

他们应该是:

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

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

x = x++;

首先递增x,然后将其先前的值赋给x。结果,x恢复到原始值。