01/10/2018, 16:18

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???

Phong Trần viết 18:29 ngày 01/10/2018

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

Son Tran viết 18:23 ngày 01/10/2018

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.

Bài liên quan
0