[Fixed] Angular number array store values as text

Issue

I use angular 11.1.2 in my project.

I try to store number ids in an array of number :

let list: number[] = [];

dtInstance.rows({selected: true}).every((item) => {
  list.push(dtInstance.row(item).data()[0]);
});

this.dService.renewDossiers(list,form.value['date']).then(
  () => {
    this.refreshDossiers();
  }
);

And then send it via HTTP POST :

renewDossiers(dossiers:number[], date:Date): Promise<any> {
    return this.httpClient.post(environment.API_URL+'/dossier/renouvellement',{dossiers:dossiers,date:date}).toPromise();
}

But the data sent in the post request for ‘dossiers’ is a string array :

{dossiers: ["3","4"], date: "2022-01-01"}

I don’t understand why dossiers contain text values while I sent a number[] type in post params.
It sould send :

{dossiers: [3,4], date: "2022-01-01"}

Can someone explain me what is wrong ?

Solution

Typecast before pushing into the list.

Final outcome:

dtInstance.rows({selected: true}).every((item) => {
  list.push(+(dtInstance.row(item).data()[0]));
});

Added extra () brackets for safety.

Leave a Reply

(*) Required, Your email will not be published