当ObservableArray项更改时重新呈现Nativescript ListView

当ObservableArray项更改时重新呈现Nativescript ListView,nativescript,angular2-nativescript,nativescript-angular,Nativescript,Angular2 Nativescript,Nativescript Angular,这就是我在视图中呈现案例的方式 <ListView [items]="cases" class="list-group" *ngIf="cases"> <ng-template let-case="item"> 假设cases具有以下值: cases=[{id:1,名称:“Sam”},{id:2,名称:“Romio”}] 当我像这样更新第一个项目时,如何让我的ListView重新渲染或以某种方式更新视图 cases[0][“name”]=“Michael”您

这就是我在视图中呈现
案例的方式

<ListView [items]="cases" class="list-group" *ngIf="cases">
    <ng-template let-case="item">

假设
cases
具有以下值:

cases=[{id:1,名称:“Sam”},{id:2,名称:“Romio”}]

当我像这样更新第一个项目时,如何让我的ListView重新渲染或以某种方式更新视图


cases[0][“name”]=“Michael”

您将希望在此处强制执行不变性。所以如果你必须变异数组中的第一个对象,我会。之后我会尝试使用spread操作符

cases[0]["name"] = "Michael"
cases = [...cases];

这将
案例设置为数组的新实例,该实例应更新列表。

您是否尝试在中应用更改?我用它来更新一个数组(不是ObservableArray),相应的RadListView会自动更新

this.ngZone.run(() => {

        this.dummyService.addFile(this.file).subscribe(
            (fileId) => {
                this.folder.push(this.file);
        },
        (error) => {
           this handleError(error);
        });
     });

我已经尝试过更改实例,但是当您执行此操作时,nativescript不会重新渲染视图,直到您在UI中找到某个对象。您执行的任何操作都足以重新渲染。但是仅仅改变实例本身是不够的。除了更新,我还尝试保留相同的实例,删除旧对象并将新对象添加到数组中,但没有成功。在对UI执行某些操作之前,不会重新呈现视图!是的!!这就是答案,谢谢。它可以根据我的需要使用ListView。虽然我不明白为什么ngZone会变魔术!