最初,我有一个如下所示的函数
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 EXCEPTION: Error in ./TimeSheetComponent class TimeSheetComponent - inline template:16:8 caused by: Cannot set property 'day' of undefined
所以我想我需要更改为
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);
关于javascript - 初始化自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819858/