“字符串”类型的参数不能分配给“数字”类型的参数

时间:2021-05-03 08:36:07

标签: javascript html angular typescript

当我运行我的代码时,price.value 说我不能那样做,但以前有人这样做过。 我犯了这样的错误。

<块引用>

“字符串”类型的参数不能分配给“数字”类型的参数。

 <div class="form-group">
    <label for="price">price</label>
    <input #price type="text" class="form-control" name="price" />
  </div>
  <div class="form-group">
    <div class="custom-control custom-checkbox">
      <input
        #isactive
        type="checkbox"
        class="custom-control-input"
        id="isActive"
      />
      <label for="" class="custom-control-label" for="isActive"></label>
    </div>

我该怎么做才能获得输入表单中的值。我的按钮代码定义如下。

 <button
    class="btn btn-primary"
    (click)="
      addProduct(name.value, price.value, isactive.checked);
      name.value = '';
      price.value = '';
      isactive.checked = false
    "
  >

我收到这样的错误并使用版本 angular 11。据我所知,它正在使用版本 9。

enter image description here

<块引用>

'string' 类型的参数不可分配给类型参数 '号码'。

addProduct(name.value, **price.value**, isactive.checked);*>

我的 addProduct 函数在这里

 addProduct(name: string, price: number, isactive: boolean) {
    console.log(name);
    console.log(price);
    console.log(isactive);
  }

2 个答案:

答案 0 :(得分:1)

输入字段的值默认是一个字符串。所以你必须先把它转换成你的函数

addProduct(name.value, parseInt(price.value), isactive.checked)

答案 1 :(得分:0)

将参数 price 的类型更改为字符串。然后在函数内部使用 parseIntNumber 将字符串转换为数字。

addProduct(name: string, price: string, isactive: boolean) {
    const pr = parseInt(price,10);
    if(!isNaN(pr){
       // rest of code her
     }
}

如果您像这样调用函数 addProduct(name.value, parseInt(price.value), isactive.checked) 并且如果 parseInt(price.value) 不是数字,则该函数将抛出错误,因为 addProduct 期望 price.value 是数字.

例如,如果 price.value 是类似 'testString' 的字符串,那么 parseInt(testString) 将是 NaN