最初,我有一个看起来像这样的函数
import { CustomDate } from './../models/customDate';
export class DateService {
datePickerResultToDate(date: Date) {
var myDate: CustomDate;
var month_str: string;
switch (date.getMonth()) {
case 0:
month_str = 'Jan';
break;
case 1:
month_str = 'Feb';
break;
// etc...
default:
month_str = 'Some Error';
}
myDate.day = date.getDate();
myDate.month = date.getMonth();
myDate.year = date.getFullYear();
myDate.customDateString = date.getDate().toString() + ' ' + month_str + ' ' + date.getFullYear().toString();
return myDate
}
}
哪里
export class CustomDate {
day: number;
month: number;
year: number;
customDateString: string;
}
执行后,我收到此错误
error_handler.js:54例外:./ TimeSheetComponent类TimeSheetComponent中的错误-内联模板:16:8由以下原因引起:无法设置未定义的属性“ day”
所以我想我需要更改为
var myDate: CustomDate = {
day: 0,
month: 0,
year: 0,
customDateString: ''
}
并修复它。我的问题是,每次我要使用myDate初始化这些值似乎很奇怪。有没有一种方法可以简化此过程,以便在我要使用myDate时已被初始化并可以使用?还是我每次都要这样做?
最佳答案
之所以收到该错误,是因为您没有初始化CustomDate
类,而只是将myDate
变量设置为CustomDate
类型。而是应该具有CustomDate
的实例化对象
var myDate: CustomDate = new CustomDate();
要么
为了减少实例化类时的工作量,尽管只需要将
Date
对象传递给CustomDate
构造函数,就可以将所有常见的东西移到类中。export class CustomDate {
day;
month;
year;
customDateString: Date;
constructor(Date date) {
this.day = date.getDate();
this.month = date.getMonth();
this.year = date.getFullYear();
this.customDateString = date.getDate().toString() + ' ' + month_str + ' ' + date.getFullYear().toString();
}
}
然后执行以下操作。
var myDate: CustomDate = new CustomDate(date);