#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);