Angular 如何将角度特性复制到另一个?

Angular 如何将角度特性复制到另一个?,angular,Angular,我试图复制angular中的一个属性(志愿服务到x),因为我想编辑该属性并保持志愿服务的原样。以下是ts的代码: volunteership; x ; constructor(private viewvolunteershipService: Volunteership, private router: Router) {} ngOnInit() { this.viewvolunteershipService.getVolunteership().subscribe(volu

我试图复制angular中的一个属性(志愿服务到x),因为我想编辑该属性并保持志愿服务的原样。以下是ts的代码:

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))的方法,但没有成功。现在它和你给我看的一样。非常感谢你!