' +'在AngularJS

时间:2017-06-21 16:02:13

标签: javascript angular typescript concatenation

这是我的代码,我在TypeScript中实现一个简单的计算器。这里的问题是所有操作都正常工作,除了添加而不是添加,执行数字连接。

HTML CODE:

<input type="text" [(ngModel)]="n1" />
 <input type="text" [(ngModel)]="n2" />

<h1>Number 1 : {{n1}}</h1>
<h1>Number 2 : {{n2}}</h1>

<select (change)="handle(selectField.value);" #selectField>
<option value="addition">Addition</option>
<option value="subtraction">Subtraction</option>
<option value="multiply">Multiplication</option>
<option value="divide">Division</option>

</select>


<h1>Result = {{result}}</h1>  

我的角色代码如下:

import {
  Component,
  OnInit
} from '@angular/core';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {

  n1: number = 0;
  n2: number = 0;
  result: number = 0;

  handle(value: string) {

    if (value == "addition") {
      this.result = this.n1 + this.n2;
    } else if (value == "subtraction") {
      this.result = this.n1 - this.n2;
    } else if (value == "multiply") {
      this.result = this.n1 * this.n2;
    } else if (value == "divide") {
      this.result = this.n1 / this.n2;
    }

  }

  constructor() {}
  ngOnInit() {

  }

}

我已将n1n2都声明为数字,结果也是数字。那么为什么数字被视为字符串而不是整数呢?

注意:我在类似问题上经历过其他一些Stack Overflow帖子,但无法找到可能的解决方案。

请帮忙!

2 个答案:

答案 0 :(得分:1)

你可以解决它。 this.result =(+ this.n1)+(+ this.n2);

答案 1 :(得分:1)

HTML输入中的任何值都是自动字符串。要解决此问题,您必须将输入值转换/转换为数字。 (+ this.n1)黑客做到了,但要真正做到正确,你应该投射或转换你的价值。

this.result = parseInt(this.n1) + parseInt(this.n2);

这只是一种方式。还有其他几个。