【问题标题】:Type 'string' is not assignable to type 'Moment' error类型“字符串”不可分配给类型“时刻”错误
【发布时间】:2019-06-15 22:42:23
【问题描述】:

我有一个这样的对象:

import { Moment } from 'moment';

export interface INewsletter {
    id?: number;
    creationDate?: Moment;
    email?: string;
}

export class Newsletter implements INewsletter {
    constructor(public id?: number, public creationDate?: Moment, public email?: string) {}
}

在一个地方我需要从我正在使用的表单中获取日期,但在第二种情况下给我带来了问题,我只需要从系统中获取日期并在新创建的对象中使用它(没有错误,我不明白,因为日期也是一个时刻)。

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import * as moment from 'moment';
import { DATE_TIME_FORMAT } from 'app/shared/constants/input.constants';

import { INewsletter } from 'app/shared/model/newsletter.model';
import { NewsletterService } from '../../entities/newsletter/newsletter.service';

@Component({
    selector: 'jhi-footer',
    templateUrl: './footer.component.html'
})
export class FooterComponent implements OnInit {
    newsletter: INewsletter;
    isSaving: boolean;
    creationDate: string;

    constructor(private newsletterService: NewsletterService, private activatedRoute: ActivatedRoute) {}

    ngOnInit() {
        this.isSaving = false;
        this.creationDate = moment().format(DATE_TIME_FORMAT);
        this.newsletter = new Object(); 
(1)     this.newsletter.creationDate = moment().format(this.creationDate); 
(2)     this.newsletter.creationDate = this.creationDate;
    }

所以,在 (1) 和 (2) 两种情况下,我都无法让它工作,我不明白为什么。

【问题讨论】:

  • 这是因为来自momentformat 函数返回一个字符串,而您的this.newsletter.creationDate 是您界面中的Moment 对象。所以你必须做这样的事情this.newsletter.creationDate = moment(this.creationDate);
  • .format() 仅用于格式化,因此您需要在那里传递一些格式,而不是 creationDate
  • 感谢和抱歉这个明显的问题。我不知道我在想什么

标签: angular typescript momentjs


【解决方案1】:

在这两种情况下,您都尝试将字符串分配给 Newsletter.creationDate,它需要一个 Moment 对象。

案例 (1) 可以通过将 moment().format(this.creationDate); 替换为 moment(this.creationDate); 来工作,因为 moment 中的 .format() 方法返回一个字符串,正如 @Julien Metral 所提到的那样

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 2021-09-29
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多