从服务分配给数组的组件变量如何防止这种变化?

时间:2017-02-24 16:38:59

标签: javascript angular

当我在组件内创建变量并将其从服务分配给数组时。并从组件中更改数组,它也会从服务中更改数组。我该如何防止这种情况。

export class PostComponent implements OnInit {
    posts: any;

    constructor(
        private memoryService: MemoryService,
    ){}

    // run code
    ngOnInit(): void {

        this.posts = this.memoryService.posts;

        this.posts.splice(1, 1);
        console.log(this.posts);// spliced
        console.log(this.memoryService.posts);// also spliced

    }

}

所以我想要的只是拼接this.post数组而不是this.memoryService中的那个。

1 个答案:

答案 0 :(得分:1)

我会将数组包装在对象文字中,然后使用Object.assign复制对象:

export class MemoryService {
    dataStore: { posts: any[] };

    get posts() {
        // make a deep copy of the object and return it
        return Object.assign({}, this.dataStore).posts;
    }