2017-02-24 26 views
1

当我在一个组件内创建一个变量并将其从一个服务分配给一个数组时。并且从组件中更改数组,它也会从服务中更改数组。我如何防止这一点。从服务分配给数组的组件变量如何防止这种情况发生变化?

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。

+0

http://stackoverflow.com/questions/35504310/deep-copy-an-array-in-angular- 2-打字稿 – tymeJV

回答

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; 
    } 
相关问题