首页 文章

AngularFireList推送错误:类型'{ message: string; }'的参数不能分配给'ChatMessage[]'类型的参数

提问于
浏览
0

这是我的ChatMessage模型:

export class ChatMessage{
            $key?: string;
            email?:string;
            userName?:string;
            message?:string;
            timeSent?: Date = new Date();
        }

这是我的AngularFireList代码:

chatMessages: AngularFireList<ChatMessage[]>;

const timestamp = this.getTimeStamp();
    //const email = this.user.email;
    const email = "example@abc.com";


this.chatMessages.push({
  message: msg,
  timeSent: timestamp,
  email: email,
  //userName: this.userName,
  userName: "user-test",


});

 getTimeStamp(){
    const now = new Date();
    const date = now.getUTCFullYear() + '/' +
                 (now.getUTCMonth() + 1) + '/' +
                 now.getUTCDate();
    const time =  now.getUTCHours() +':'+
                  now.getUTCMinutes() + ':'+
                  now.getUTCSeconds();    

    return (date + ' '+ time);              
  }

我有一个错误说:

message:'类型的参数'{message:string; timeSent:string;电子邮件:string; userName:string; }'不能分配给'ChatMessage []'类型的参数 . 对象文字只能指定已知属性,而'ChatMessage []'类型中不存在'message' .

2 回答

  • 0

    问题是你的 getTimeStamp() 函数,它返回 string ,而不是 Date .

    因此,当你这样做

    this.chatMessages.push({
      message: msg,
      timeSent: timestamp,
      email: email,
      userName: "user-test",
    });
    

    您尝试推送的对象不满足接口 . 您可以修改接口以使用 timeSent 类型的字符串,或修改 getTimeStamp 函数以返回 Date

  • 1
    this.chatMessages.push(
      [
        {
          message: '',
          timeSent: timestamp,
          email: '',
          // userName: this.userName,
          userName: 'user-test',
        }
      ]
    );
    

    要么

    chatMessages: AngularFireList<ChatMessage[]>;

    替换为

    chatMessages: AngularFireList<ChatMessage>;

相关问题