如何在angular2模型上声明日期属性

时间:2017-04-19 18:37:41

标签: angular typescript ruby-on-rails-5

我使用Rails 5 + Angular2制作一个Web应用程序,我有一个名为" Books"的模型。我的问题是,我有一个名为" books.ts"有代码:

export class Book {
id: number;
author_one: string;
author_two: string;
author_three: string;
title: string;
subtitle: string;
publisher: string;
year: date;
city: string;
edition: number;
volume: number;
pages: number;
ISBN: string;
barcode: string;
}

但是,当我运行" ng serve --port 9000"我收到以下错误:

Cannot find name 'date'.

在我遇到与其他属性相同的问题之前,因为我正在使用"整数",但我将其更改为" number"它起作用,所以我想知道Angular是否不理解某些类型的属性。但在搜索互联网后,我还没有找到如何声明类型变量" date"在Angular。 有没有办法声明日期类型的变量?或者我应该使用字符串并进行某种处理以将其用作日期?

5 个答案:

答案 0 :(得分:17)

这是打字稿问题。打字稿中没有date类型。您可以使用Date来表示本机javascript Date对象,但这只是字段的输入。 Angular / TS不会为你强迫你的值进入Date对象。如果您的数据来自JSON源,则日期通常只是字符串(JSON不支持日期对象)。

答案 1 :(得分:4)

请检查typescript中支持的数据类型。

https://www.typescriptlang.org/docs/handbook/basic-types.html

那里没有

日期数据类型。您可以根据需要使用字符串任何数据类型。

答案 2 :(得分:1)

改为使用JS日期

{
  id: string;
  name: string;
  description: string;
  status: number;
  active_from: Date;
  active_till: Date;
  data: any = {};
  created_at: Date;
  updated_at: Date;
}

并将其初始化为

{ 
  id: "abc123", 
  name: "Some name",
  description: "Some description",
  status: 1,
  active_from: new Date("Fri Dec 08 2019 07:44:57"),
  active_till: new Date("Fri Dec 08 2020 07:44:57"),
  data: {},

  created_at: new Date("Fri Dec 08 2019 07:44:57"),
  updated_at: new Date("Fri Dec 08 2019 07:44:57"),
}

答案 3 :(得分:0)

javascript中没有日期类型,请使用Date javascript类型。

答案 4 :(得分:0)

您可以更方便地使用moment.js。

import { Moment } from 'moment';

export class Book {
    id: number;
    author_one: string;
    author_two: string;
    author_three: string;
    title: string;
    subtitle: string;
    publisher: string;
    year: Moment;
    city: string;
    edition: number;
    volume: number;
    pages: number;
    ISBN: string;
    barcode: string;
}