我试图在公共媒体资源中添加DB中的一些元素,这些元素在DOM中的* ngfor标记中使用。
这种代码显示错误:
public webdesign: Array<WebDesign>;
loadMore() : void
{
this.apollo.query(`{
getWebDesignList (page : ${this.page++}) {
_id
title
description
screenPath
profilPictureCreator
creatorName
websiteLink
createdAt
}
}`).subscribe(r => {
r.data.getWebDesignList.forEach(e => this.webdesign.push(e));
//TypeError: Cannot add property 2, object is not extensible
});
}
为了纠正这个问题,我做了一个糟糕的方式(&#34; diabolic&#34;)代码:
let temp = JSON.parse(JSON.stringify(this.webdesign));
for (let i = 0; i < r.data.getWebDesignList.length; i++) {
temp.push(r.data.getWebDesignList[i]);
}
this.webdesign = temp;
它们是一种更好,更优雅的方法来执行loadMore操作而不克隆js对象吗?
编辑:WebDesign界面:
export interface WebDesign {
_id : string,
title: string,
description: string,
screenPath: Array<string>,
profilPictureCreator: string,
creatorName: string,
tags: Array<string>,
colors: Array<string>,
websiteLink: string,
createdAt: string,
}
AJAX回调:
{"data":
{"getWebDesignList":
[
{"_id":"5a8888ba3039b0002fe78897","title":"test4","description":null,"screenPath":["http://www.voyage-sponsorise.com/wp-content/uploads/2017/09/image-slider2.jpg"],"profilPictureCreator":"gfdhrefd","creatorName":"retrhdb","websiteLink":"ffezfez","createdAt":"Thu Nov 09 2017 20:55:00 GMT+0100 (CET)","__typename":"WebDesign"},
{"_id":"5a887b68c7b990002f4d8657","title":"test 3","description":"vnejkvbnjre","screenPath":["http://www.voyage-sponsorise.com/wp-content/uploads/2017/09/image-slider2.jpg"],"profilPictureCreator":null,"creatorName":"ezka,fezk","websiteLink":null,"createdAt":"Thu Feb 01 2018 19:58:00 GMT+0100 (CET)","__typename":"WebDesign"}
]
}}
提前致谢