类型'日期'的论点不能分配给' string'类型的参数。

时间:2016-12-28 05:18:07

标签: angular meteor angular2-meteor

我正在研究Angular2-Meteor项目,我得到了这个

  

类型的争论'日期'不能分配给类型的参数   '串'

当我写这个函数来设置日期值时出现

错误。

start: startOfDay(new Date(attendance.dayAt)),

我尝试将类型设置为 日期 ,但是我怎么办不能解决此错误?

3 个答案:

答案 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;
      })
    );
  }