视图不与组件数组同步

时间:2016-05-06 08:43:31

标签: angular

我的服务中有以下结构:

getAsync(){
    var updateStream = this._http.get('someApi')
        .map(
            res=>{
                var success = res.json();
                ///some logic on success
                return success;
            })
        .catch(
            error=>{
                return Observable.throw(error)
            });

    return updateStream;
}

在我的组件中,我有:

Service.getAsync().subscribe(success=>{
   Object.assign(this.myArray,success)
})

其中myArray定义为:

public myArray:any[] = [];

意思是,它是在构造函数中初始化的。

现在,在我看来,我有:

{{myArray | json}}

保持这样:

[]

我已经检查了控制台日志和间隔,this.myArray确实发生了变化,组件中的值也发生了变化。

我在哪里弄错了?

更新

这是plnkr

1 个答案:

答案 0 :(得分:1)

只有在为属性分配了另一个数组时,才会在修改数组时更新视图。

如果您更改了该行(缺少将结果分配给this.myArr的部分)

Object.assign(this.myArr,success)

this.myArr = success; //Object.assign(this.myArr,success)

它会更新视图。

如果视图绑定到数组中项目的属性,那么*ngFor会识别同一数组中的更改但只有{{myArr | json}} Angular不会识别更改,因为{{1} 1}}管道是纯粹的,因此在json发生变化之前,Angular不会调用它。

如果您使用

myArr

然后Angular也会检测同一阵列中的变化。