我试图将模型类(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);
}