Angular:对象不可扩展

时间:2018-03-18 15:08:08

标签: javascript angular typescript

我试图在公共媒体资源中添加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"}
]
}}

Console.log result

提前致谢

0 个答案:

没有答案