我正在研究Angular2-Meteor项目,我得到了这个
当我写这个函数来设置日期值时出现类型的争论'日期'不能分配给类型的参数 '串'
错误。
start: startOfDay(new Date(attendance.dayAt)),
我尝试将类型设置为 日期 ,但是我怎么办不能解决此错误?
答案 0 :(得分:4)
我有类似的问题。
经过研究,我找到了三个有用的链接:
Date variable works, but functions on it do not
Converting string to date issue
Invalid argument 'date format' for pipe 'DatePipe'?
我接下来要做的是在“导出类”组件中将我的变量声明为类型Date,如下所示:
start: Date
然后在函数中我使用它来填充日期变量:
start = new Date(Date.now());
判断您收到的错误我假设您的函数“startOfDay()”返回一个字符串,因此您必须按如下方式更改代码。
start: new Date(startOfDay(new Date(attendance.dayAt)))
这是因为如果“开始”是一个日期,那么你必须使用函数new Date()为它指定一个日期。 Date然后将字符串作为输入并返回日期并将其分配给变量“start”。希望这会有所帮助:)
答案 1 :(得分:0)
我遇到这样一种情况,即从Web服务以JSON字符串返回日期值,并且将日期强制转换为typeScript中的Date类型属性。这将导致在编译过程中无法显示“字符串”类型,而无法将其分配给“日期”类型错误。
我发现一种解决方法是将客户端属性定义为“ any”类型(而不是:Date)。这使JSON可以很好地转换为日期,并且在编译过程中不会显示任何错误。
答案 2 :(得分:0)
如果您要从API中检索日期作为字符串,则需要从中转换日期日期字段:
getUser(id: number): Observable<User> {
return this.http.get<User>(this.baseUrl + 'users/' + id.toString())
.pipe(
map( user => {
user.lastActive = new Date(user.lastActive);
return user;
})
);
}