我通过http调用和订阅获取json数据: -
this.localService.getdata('url').subscribe(
function (success) {
this.dataa = success;
this.dataa2 = success;
}
);
stackblitz 链接:- https://stackblitz.com/edit/angular-stackblitz-json-xr7ny8?file=src/app/app.component.ts
1)data.json分配给变量dataa2 的值发生了变化,并且当方法get2()被调用时,dataa2值正在发生变化。同时,变量相同test2。
2)如何在给定情况下存储data.json变量(例如dataa2- )而不改变其值。
3)为什么我不能在不改变它们的值的情况下将成功存储在两个变量中。如何
在不相互影响的情况下将成功数据存储在两个变量中。我是否每次都需要订阅才能获取 json 数据的副本?
数据.json
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
.html
<button type ="button" (click)="get()">tset</button>
<br/>
<br/>
<br/>
<button type ="button" (click)="get2()">tset2</button>
.ts
import { data } from './test';
export class AppComponent implements OnInit {
name = 'Angular';
dataa:any;
dataa2:any;
test ={
'id':'abc'
}
test1:any;
test2:any;
constructor() {
}
ngOnInit() {
this.dataa = data;
this.dataa2 = data;
this.test1 = this.test;
this.test2 = this.test;
}
get(){
this.dataa['userId'] = 2;
this.dataa['id'] = 2;
this.test1['id'] = 'I am changed';
}
get2(){
console.log(JSON.stringify(this.dataa));
console.log(JSON.stringify(this.dataa2));
// should be===> this.dataa2 = {
// "userId": 1,
// "id": 1,
// "title": "delectus aut autem",
// "completed": false
// }
console.log(JSON.stringify(this.test1));
console.log(JSON.stringify(this.test2));
}
}