为什么angular2更新变量的所有引用?angular2避免更新参考变量
问题陈述: 我有上调用getData方法
@Injectable()
export class BuildingService {
constructor(private http: Http){
}
buildings$: Observable<Building[]>;
getData() : Observable<Building[]>{
if (this.buildings$) {
this.buildings$ = this.http.get('http://localhost:8080/buildings')
.map(this.extractData)
.publishReplay(1)
.refCount();
}
return this.buildings$;
}
private extractData(res: Response) {
let body = res.json();
return body;
}
}
在组件我订阅观察到从GetData方法返回,并做一些过滤返回观察到的一个服务,它是工作的罚款
export class Component1 implements onInit{
constructor(private _buildingService: BuildingService) {}
buildings: Building[] = [];
ngOnInit() {
this._buildingService.getData()
.subscribe(buildings => {
this.buildings = buildings;
this.buildings.forEach((building, index){
if (building.id === 0) {
this.buildings.splice(index, 1);
}
});
});
}
getUnfilteredData() {
this._buildingService.getData()
.subscribe(buildings => {
this.buildings = buildings;
});
}
}
但即使我调用getUnfilteredData()也,我以前过滤的数据。有人可以解释为什么这种行为以及如何避免这种情况?
你第一次调用'ngOnInit',然后过滤'this.buildings'。稍后你调用相同的服务,并在回调'建筑物'是'this.buildings'?你可以'console.log(建筑物);'订阅内? – echonax
@echonax我做了console.log(建筑物)里面的getUnfilteredData。我正在过滤数据而不是未过滤的数据。 –