当我在组件内创建变量并将其从服务分配给数组时。并从组件中更改数组,它也会从服务中更改数组。我该如何防止这种情况。
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 :(得分: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;
}