свойство number объекта преобразуется в строку в Angular2

#javascript #angular

#javascript #angular

Вопрос:

У меня есть модель с двумя свойствами, одно из которых является числом.

 export class Ingredient
{
    constructor(public name:string,public amount:number)
    {

    }
}
  

Однако каждый раз, когда я пытаюсь добавить к сумме, я фактически получаю конкатенацию. Странно то, что когда я пытаюсь выполнить parseInt для значения, я получаю ошибку, я не могу передать number в parseInt, но typeof возвращает строку для свойства.

 addIngredient(ingredient: Ingredient)
{
    let ingredientInList=this.ingredientInList(ingredient);
    //alert(ingredientInList);
    if(ingredientInList!==false)
    {
       // alert(typeof(this.ingredients[ingredientInList].amount));

      this.ingredients[ingredientInList].amount=this.ingredients[ingredientInList].amount   ingredient.amount;
    }
    else
    {
        //alert(typeof(ingredient.amount));

        this.ingredients.push(ingredient);
    }
    this.ingredientsChanged.emit(this.ingredients.slice());
}
  

Поэтому, когда я запускаю приведенный выше код, количество рядом с ингредиентом объединяется с предыдущим количеством (при условии, что он уже нашел аналогичный ингредиент).

Есть идеи?

Комментарии:

1. грязно, но, вероятно, это работает (this.ingredient[список ингредиентов].amount * 1) (ingredient.amount * 1)

2. осторожно, место, которое вы определили this.ingredients , это массив Ingredient[] ?!

Ответ №1:

Пожалуйста, убедитесь, что оба типа «amount» number не являются string.

в противном случае вы можете использовать приведенный ниже код для синтаксического анализа числа-

 this.ingredients[ingredientInList].amount = parseInt(this.ingredients[ingredientInList].amount)   parseInt(ingredient.amount);