如何更新列表中的对象

时间:2019-01-29 15:53:30

标签: angular typescript arraylist angular6

我遇到一个简单的情况:

我获得带有事件(干预对象)的日历。

当我单击事件时,它将打开模式。

要在打开之前获取模态信息,我使用位于“ CalendarServices”服务中的“ findByTicket”方法:

 findByTicket(list: Intervention[], idSearch: number) {
    return (list.find((x) => x.ticketDTO.idaiticket === idSearch));
}

这是调用此方法的TS文件:

openEventModal (event, action) {
    console.log('Start openEventModal');
    let intervention = this.calendarServices.findByTicket(this.confirmList, event.event.id);
    if (typeof intervention === 'undefined') {
        intervention = this.calendarServices.findByTicket(this.interventionInitList, event.event.id);
        if (typeof intervention === 'undefined') {
            console.log('nouveau ticket => ' + typeof intervention);
            intervention = {} as Intervention;
            // blabla
        } else {
            console.log('this.interventionInitList avant open: ');
            console.log(this.interventionInitList);
            console.log('intervention existante => ' + typeof intervention);
        }
    } else {
        console.log('ticket ou intervention réédité ' + typeof intervention );
    }
    const dialogRef = this.dialog.open(ModalInterventionComponent, {
        height: '50%',
        width: '50%',
        maxWidth: '100vw',
        maxHeight: '100vh',
        autoFocus: false,
        data: {
            myJarviaServices: this.myJarviaServices,
            contactsList: this.contactsList,
            prestatairesList: this.prestatairesList,
            typesList: this.typesList,
            intervention: intervention,
            action: action
        }
    });

    dialogRef.afterClosed().subscribe(result => {
        if (result !== null) {
            console.log('this.interventionInitList en sortie de modal: ');
            console.log(this.interventionInitList);
            if (action === 1) { 
                // case 1
            } else {  
                 // case 2
            }
        } else {
            if (action === 1) {
               // case 3
            }
        }
    });
}

在这种情况下:使用“ findByTicket”功能在“ interventionInitList”列表中检索干预对象,该对象包含每个干预措施的原始信息(共有2个干预措施)。

更新信息后关闭模态时会发生问题: “ interventionInitList”项也将更新为我在模态中选择的值! 为什么???

以下是打开的日志(console.log说明),其中包含原始信息: 干预对象被发送到模态

enter image description here

这是在模态下更新干预对象信息后的日志:

enter image description here

该项目也在更新。但是我从来没有在我的代码中更新interactionInitList ...

为什么要保留此“链接”,我该如何解决? 我只想在此列表中检索原始信息,但不更新它

0 个答案:

没有答案