Angular 如何将角度特性复制到另一个?
我试图复制angular中的一个属性(志愿服务到x),因为我想编辑该属性并保持志愿服务的原样。以下是ts的代码:Angular 如何将角度特性复制到另一个?,angular,Angular,我试图复制angular中的一个属性(志愿服务到x),因为我想编辑该属性并保持志愿服务的原样。以下是ts的代码: volunteership; x ; constructor(private viewvolunteershipService: Volunteership, private router: Router) {} ngOnInit() { this.viewvolunteershipService.getVolunteership().subscribe(volu
volunteership;
x ;
constructor(private viewvolunteershipService: Volunteership,
private router: Router) {}
ngOnInit() {
this.viewvolunteershipService.getVolunteership().subscribe(volunteership =>
this.volunteership = volunteership);
console.log("Volunteership", this.volunteership);
this.x = this.volunteership;
}
在这里,在HTML中,我想调用ngFor上的属性x,这样我可以从中选择一个城市,但它没有显示任何内容。如果我使用志愿服务而不是x,它工作得很好。我怎样才能把志愿服务复制到x,这样我就可以从中选择一个城市
<div class="form-group" >
<label for="city" >City</label>
<select id="city" class="form-group" >
<option value=""></option>
<option *ngFor=" let z of x" >{{z.city}}</option>
</select>
</div>
城市
{{z.city}
我已经尝试以数组形式复制
for (var i = 0, len = this.volunteership.length; i < len; i++) {
this.x[i] = this.volunteerhip[i];
}
for(var i=0,len=this.autonologship.length;i
我甚至尝试过使用Object.assign()方法,但仍然没有任何结果。首先,您需要在回调(
subscribe
)中进行赋值,正如这里所解释的:但是您提到,您只希望更改反映在x
数组中。按原样,所有更改都将发生在两个数组上,因为x
引用了志愿服务
,您可能希望使用对象。分配:
ngOnInit() {
this.viewvolunteershipService.getVolunteership().subscribe(volunteership => {
this.volunteership = volunteership;
this.x = this.volunteership.map(obj => Object.assign({}, obj))
});
}
现在x
数组将不会引用志愿服务数组。subscribe
是异步的,这意味着subscribe
之外的代码在您调用服务时不会停止执行。如果您想使用您为您的志愿服务设置的数据
,您需要在订阅中使用,或者以确保您的服务已经获取数据的方式使用(例如,在使用*ngIf=“志愿服务”
显示的下拉列表中调用更改
事件)。谢谢,它确实有效!我想对x所做的更改仍然需要在subscribe中,对吗?是的,如果需要在检索数据后进行更改,则需要在subscribe中进行更改(你还知道如何在另一个对象中保存志愿服务.city吗?所以你希望新数组是字符串数组?然后你也可以使用map
:让cityArray=this.furnitship.map(x=>x.city)
我尝试了类似于让city=this.furnitship.city.map(obj=>Object.assign({},obj))的方法,但没有成功。现在它和你给我看的一样。非常感谢你!