TypeScript对象属性无效

时间:2017-06-01 22:24:52

标签: javascript angular typescript

我试图将模型类(Message)的实例作为参数传递给Angular中组件类的方法。它有6个属性,但在代码中此时只需要填充一个属性。出于某种原因,一旦传入对象, all 属性将变为null。这里有某种神秘的JS行为,我不知道吗?感谢。

组件上message的实例属性是Message类的实例

export class Message {
  constructor(
    public messageId: number,
    public messageTicketId: number,
    public messageProfileId: number,
    public messageContent: string,
    public messageDateTime: number,
    public messageIsStageTwo: number
  ) {}
}

并且定义如下

  message: Message = new Message(null, null, null, null, null, null);

对象由模型驱动的表单填充,如下所示(鉴于嵌套表单的不可能性,以及双向绑定的要求,我使用模型驱动的表单将输入单独映射到属性,并在常规按钮上使用click事件提交此对象)

<form name="ticketForm" #ticketForm="ngForm" (ngSubmit)="sendTicket()">
<!-- main body of form here-->
  <label for="messageContent">Message:</label>
  <textarea id="messageContent" name="messageContent" [(ngModel)]="message.messageContent" #messageContent="ngModel"></textarea>
  <button type="button" (click)="sendMessage()">Save</button>
<!-- .... rest of form here -->

// at this point, this.message is an object with one property set to a string
// so then I call queueMessage(this.message); like this:

  sendMessage(): void {
    if(this.ticketId) {
      this.createMessage(this.message);
    } else {
      this.queueMessage(this.message);
    }
  }

和queueMessage看起来像这样:

queueMessage(message: Message): void {
  console.log(message); // is an object with all null properties
  this.messageQueue.push(message);
}

0 个答案:

没有答案