代码之家  ›  专栏  ›  技术社区  ›  Mike

类型“string”不能分配给类型“moment”错误

  •  0
  • Mike  · 技术社区  · 6 年前

    我有一个这样的物体:

    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),我都不能使它工作,我也不明白为什么。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Leo    6 年前

    在这两种情况下,您都尝试将字符串赋给 Newsletter.creationDate ,它期望 Moment 对象。

    案例(1)可以通过更换 moment().format(this.creationDate); 通过 moment(this.creationDate); 作为 .format() 方法从 moment 返回字符串,如 @Julien Metral