getTime不是函数

时间:2018-12-26 06:36:02

标签: angular typescript

我将date_work设置为Date数据类型。但是,当我使用命令console.log(typeof master.date_work)检查数据类型时,出于某种原因它会显示string的类型。因此,当我使用getTime()函数时,会发生这样的错误。如何将字符串数据类型更改为日期?

  

TypeError:master.date_work.getTime不是函数

型号:

export interface Masters {
    master_id?: string,
    full_name: string,
    comment: string,
    date_work: Date,
    teams_id: string
}

ts:

reports: Rep4Hours[]
masters: Masters[]
teams: Teams[]
filteredTeams = []
filteredMasters = []

onSelectedReport(reportId) {
  this.selectedReport = this.reports.find(
    el => {
      return el.report_id === reportId
    }
  )

  if (this.teamsService) {
    this.teamsService.fetch().subscribe(
      team => {
        this.teams = team
        this.filteredTeams = this.teams.filter(
          (team) => team.team_id == this.selectedReport.teams_id
        )
        if (this.mastersService) {
          this.mastersService.fetch().subscribe(
            master => {
              this.filteredMasters = []
              this.masters = master
              for(let team of this.filteredTeams){
                for(let master of this.masters){
                  if(master.teams_id == team.team_id){
                    if (Math.max(...this.masters.map(master => master.date_work.getTime()))) {
                      if (master.date_work <= this.selectedReport.report_date) {
                        this.filteredMasters.push(master)
                      }
                    }
                  }
                }
              }
            }
          )
        }
      }
    )
  }
}

2 个答案:

答案 0 :(得分:0)

与xyz的答案互补,您的服务可以在javaScript的Date对象中转换“ data_work”。 (我想您已收到字符串格式的日期)

//Your masterService
fetch()
{
     return this.httpClient.get(...)
     .pipe(map(x=>
           {...x,  //all the properties of "x"
            date_work:new Date(x.date_work)  //but date_work, convert to Date object 
           }
     ))
}

答案 1 :(得分:-1)

您的数据date_work的格式不是Date。 Typescript无法保证传入的服务对象。

您的模型和服务返回对象之间存在不一致。当您将类映射到返回的对象打字稿时,将date_work标注为日期,但是在实际数据中却不是。