Sao cái phép cộng này không đúng

Mình đang thử dùng angular service, sao cái kết quả này ngộ thế?

##This is service.ts


    import { Injectable } from '@angular/core';
    @Injectable()
    export class ToanService {
      constructor() { }
      cong(a: number, b: number): number {
             return a + b;
      }
    }



##This is component.ts


    import { Component, Input } from '@angular/core';
    import { ToanService } from './toan.service';
    @Component({
      selector: 'hello-use-service',
      template:
      `
        <div class="box2">
          this is hello use service component<br>
          {{name}}<br>
          {{ten}}<br>
          a : <input [(ngModel)]="a" /><br>
          a : <input [(ngModel)]="b" /><br>
          <button (click)="on_cong()" >Cộng</button>
        </div>
      `,
      styles: [
        '.box{border:1px solid blue}',
        '.box2{border:1px solid green;padding:5px;margin:5px;}'
      ]
    })
    export class HelloUseServiceComponent {
      @Input() name: string;
      ten = "thuc 101";
      a = 1;
      b = 1;

      constructor(private myservice: ToanService) { }
      ngOnInit() {
      }
      on_cong() {
        var tong = this.myservice.cong(this.a, this.b);
        alert(tong);
      }

    }


Sao kết quả là nối chuỗi: 1,1=>11; 111,1=>1111???

Trước khi tính thì parse cái this.a, this.b sang integer trước xem

Vấn đề nằm ở input của bạn lấy từ giá trị của <input />, không khai báo type của nó thì nó mặc định là text.
Để tránh điều này cần validate dữ liệu đầu vào nếu bạn không chắc nó đến từ đâu trước khi thực sự tính toán.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?