空日期类型以angular2返回1970日期值

时间:2017-06-02 05:51:29

标签: javascript angular date typescript angular2-forms

从服务获取数据并使用angular2(typescript)中的接口类型订阅数据集。

接口具有日期(startDate字段名称:日期类型)字段 从服务中,如果startDate字段值在html页面格式中为null,则获取01/01/1970值。

interface :
    export class name { 
     public realStartDate?: Date
}


subscribe : 
this.data = data.map(item => new name (new Date(item.startDate))

2 个答案:

答案 0 :(得分:0)

需要为 item.startDate 添加空检查。

"新日期(item.startDate)"当item.startDate的值为null时返回01/01/1970。

尝试按如下方式编写:

subscribe : 
this.data = data.map(item => new name (item.startDate==null?new Date():new Date(item.startDate))

答案 1 :(得分:0)

如果您想使用item.startDate ? new Date(items.startDate) : new Date()默认为当前日期。此外,你的班级是一个坏主意。不要使用类来表示这样的对象,而是使用接口。

无论如何,你所需要的基本上是

<强> dated.ts

export interface Dated { 
  realStartDate?: Date;
}

<强>服务项-service.ts

import {Inject} from '@angular/core';
import {Http} from '@angular/http';
import {Observable} from 'rxjs';
import 'rxjs/add/operator/map';

import {Dated} from './dated';

@Inject export default class DatedItemsService {
  constructor(readonly http: Http) {}      

  get(id): Observable<Dated> {
    return this.http.get(`/api/v1/dateditems/${id}`)
      .map(response => response.json())
      .map(({startDate}) => ({
        realStartDate: startDate ? new Date(startDate): undefined
      });
  }
}

编辑:根据评论,它似乎需要一个空值来代替当前日期,所以我已相应地更新了答案。