为JSON的财产投掷NAN消息



我已经开发了一个Angular4 Appln,该Appln调用nodeexpressjs服务器以获取JSON数据,并将数据添加到JSON对象。以下是Addemployeeeform的onsubmit函数。

onSubmit(formValue: any) {
    console.log("Form Value = " + JSON.stringify(formValue, null, 4));
    let newEmployee: Emp;
    let last: any;
    this._employeeService.lastEmployeeID().subscribe((last: any) => last = last,
        err => console.log(err));
    newEmployee = {
        //id: employeeCount + 1,
        id: last + 1,
        name: formValue.name,
        manufacturer: formValue.manufacturer,
        type: formValue.type,
        batchno: formValue.batchno,
        expdate: formValue.expdate,
        price: formValue.price
    };
    // console.log(newEmployee.id );
    let temp = this._employeeService.addEmployee(newEmployee).subscribe(err =>
        console.log(err));
    this.router.navigate(['employees']);
}

,但随后没有将ID属性推向Newemployee的JSON。

{id: 1, name: "Paracetamol", manufacturer: "Ranbaxy", type: "Tablet", batchno …}
{id: 2, name: "Sinarest", manufacturer: "GSK", type: "Tablet", batchno: …}
{id: 3, name: "Viagra", manufacturer: "Pfizer", type: "Capsule", batchno: …} 
{name: "Aspirine", manufacturer: "Aspirine", type: "Syrup", batchno: "03/46", expdate: "03/04/2023", …}

newEmployee是Asperine。

以及不计费console.log(newEmployee.id );代码线

我得到了NAN错误

首先,不应该将last定义为number而不是any

第二,更重要的是,LastEmployeeID调用很可能是异步的,这意味着它将在下一行代码完成之前无法完成。您需要在订阅中添加该操作后执行后执行的所有代码。

this._employeeService.lastEmployeeID().subscribe(
 (last: any) => {
    last = last;
    newEmployee = {
      //id: employeeCount + 1,
      id: last + 1,
      name: formValue.name,
      manufacturer: formValue.manufacturer,
      type: formValue.type,
      batchno: formValue.batchno,
      expdate: formValue.expdate,
      price: formValue.price
  };
  // console.log(newEmployee.id );
  let temp = this._employeeService.addEmployee(newEmployee).subscribe(
    employee => {
       console.log(employee);
       this.router.navigate(['employees']);
    },
    err => console.log(err)
  );

以及第一个函数中的那么多代码传递给您的订阅,您可能需要做到它自己的功能:

this._employeeService.lastEmployeeID().subscribe(
   (last: number) => this.processEmployeeId(last),
    err => console.log(err));
processEmployeeId(last: number) {
   // Your code here.
}

如果last应该是数字类型,则说明:

let last: number;

如果您要使用Typescript-不妨将其用于您的优势。

最新更新