Angular2中的“ ...”是什么?目的是什么?

时间:2019-11-01 07:05:42

标签: angular typescript

什么是Angular中的 ... ?什么叫呢? 我在想addFlash方法中“ ... flash”的用途是什么,它是array.push()中的一个参数?

而且在toggleFlash方法中,如果我们只能使用 this 关键字,为什么还有“ ...”呢?

flashs: IFlash[] = [];

flashs$ = new BehaviorSubject<IFlash[]>(this.flashs);

addFlash(flash: IFlash) {
    this.flashs.push({
        ...flash,
        show: false,
        id: getRandomNumber()
    });
}

toggleFlash(id: number) {
    const index = this.flashs.findIndex(flash => flash.id === id);
    this.flashs = [
        ...this.flashs.slice(0, index),
        {
            ...this.flashs[index],
            show: !this.flashs[index].show
        },
        ...this.flashs.slice(index + 1)
    ];
    this.flashs$.next(this.flashs);
}

1 个答案:

答案 0 :(得分:1)

...在代码中是es6 Spread_syntax...this.flashs会将this.flashs项添加到您要使用的数组中,而{...this.flashs[index]将添加以下项的属性给定索引到使用对象的对象,请阅读下面代码中的注释以进一步说明

 this.flashs = [
        ...this.flashs.slice(0, index),//slice flashs array and add result items here like obj1,obj2....
        {
            ...this.flashs[index],//get object at given index and add that object properties here like prop1:val,prop2:val,...
            show: !this.flashs[index].show
        },
        ...this.flashs.slice(index + 1)
    ];