2017-01-22 1 views
1

У меня есть 2 текстовых поля. Одно текстовое поле будет принимать дату рождения от пользователя и в зависимости от даты рождения. Я хочу рассчитать и отобразить их возраст в другом текстовом поле.Как рассчитать возраст от даты рождения в Angular 2 с помощью TypeScript

Вот мой компонент класса

Student.component.html

<div class="row"> 
<div class="input-field col m2"> 
    <input type="date" id="txtdate"> 
</div> 
<div class="input-field col m4"> 
    <input type="number" id="age"> 
</div> 

student.component.ts

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

@Component({ 
selector: 'stud', 
templateUrl: './student.component.html' 
}) 
export class StudentComponent implements OnInit 
{ 

    constructor() { } 

    ngOnInit() { } 

} 
function CalculateAge() 
{ 
    var birthdate = <HTMLElement>document.getElementById("txtdate"); 
    var dt = new Date(); 
    var today = dt.getDate(); 

} 

Как я Calculat возраст от даты рождения?

+0

попробуйте использовать valueOf: разница переменная = today.valueOf() - birthdate.valueOf(); – darron614

ответ

0
<div class="row"> 
    <div class="input-field col m2"> 
     <input type="date" [(ngModel)]="birthdate" id="txtdate"> 
    </div> 
    <div class="input-field col m4"> 
     <input type="number" [(ngModel)]="age" id="age"> 
    </div> 
    <button (click)="CalculateAge()">Calculate Age</button> 
</div> 

И в компоненте

import { Component, OnInit } from '@angular/core'; 
@Component({ 
selector: 'stud', 
templateUrl: './student.component.html' 
}) 
export class StudentComponent implements OnInit 
{ 
    public birthdate: Date; 
    public age: number; 

    constructor() { } 

    ngOnInit() { } 

    public CalculateAge(): void 
    { 
     if(this.birthdate){ 
      var timeDiff = Math.abs(Date.now() - this.birthdate); 
      //Used Math.floor instead of Math.ceil 
      //so 26 years and 140 days would be considered as 26, not 27. 
      this.age = Math.floor((timeDiff/(1000 * 3600 * 24))/365); 
     } 
    } 

} 
+1

Не работает. После нажатия кнопки расчета я получаю ошибку на консоли «дата рождения.getTime не является функцией». Пожалуйста, предложите альтернативу – Maximum

+0

@Maximum Я ее обновил, попробуйте прямо сейчас! –

+3

Я все еще сталкиваюсь с некоторыми проблемами в этой строке «var timeDiff = Math.abs (Date.now() - this.birthdate); он показывает мне ошибку при ошибке this.birthdate: «Правая сторона арифметического оператора должна быть типа any или number» – Maximum

Смежные вопросы