您好我在尝试将元素插入数组时遇到以下错误:
无法添加/删除密封的数组元素
我使用apollo-angular(GraphQL客户端)获取数据。数据恢复得很好。
这是我的代码: main.html中:
<div class="chats">
<chat *ngFor="let chat of activeChats; let i = index" [chat]="activeChats[i]" (close)="removeChat(i)"></chat>
</div>
聊天组件:
@Component({
selector: 'chat',
templateUrl: './chat.component.html'
})
export class ChatComponent {
@Input() chat : Chat
constructor(
private chatService : ChatService
) {}
getNextPage(){
this.chatService.getMessages(this.chat.id, this.chat.messages[0].sentTime).subscribe(msgs=>{
// The error thrown here
this.chat.messages.splice(0,0,...(msgs || []));
})
}
}
聊天数据样本结构:
{
id : "234234234",
messages : [
{id:"2341112", sentTime:"2017-07-05T17:14:07.396Z"},
{id:"2341342", sentTime:"2017-06-05T17:14:07.396Z"}
]
}
答案 0 :(得分:2)
收到回复时,在您的服务中:
代替:
this.messages = result.data.nodes;
使用:
this.messages = [...result.data.nodes];
答案 1 :(得分:2)
问题在于apollo-client软件包,我用它来与我的GraphQL服务器通信并获取数据。
似乎apollo-client会自动深度冻结所有服务器响应。 我在他们的github回购中打开了一个相关问题: https://github.com/apollographql/apollo-client/issues/1909