2017-11-10 45 views
0

我对canvas应用程序使用了fabricJS和angular2。我正在将一个SVG对象加载到画布上,我想返回SVG中的所有对象。在角度回调中将对象追加到数组的正确方法

在此回调中,返回一个对象并将其推送到数组上。在函数调用SVG中的所有元素之后,我以包含构成我的SVG的10个对象的数组结束。所有这一切都很好。

我打算做的是使用ngFor来显示表格中的所有对象的属性组织。

private allLayersArray: any = []; 

}, function (item, object) { 
     object.set('id', item.getAttribute('id')); 
     group.push(object); //local array in parent function 
     if(this.selectedJersycut) 
     this.bindCanvas(); 
     this.allLayersArray = group; //set all layers variable to group 
     console.log(this.allLayersArray); 
    //prints correctly after 10 loops, but values dont update in view 

    }); 

在这一点上,group有10个对象,我想它分配给私有组件变量allLayers视图来填充。但是,当我console.log(allLayersArray)时,正确的阵列对象正在打印到控制台。

查看代码:

<tr *ngFor="let layer of allLayersArray | async"> 
       <td> 
       {{layer}} 
       {{layer.id}} 
       </td> 
       <td> 
       Jersey Body 
       </td> 
       <td> 
       <input type="radio" value="Yes"/> 
       <input type="radio" value="No"/> 
       </td> 
</tr> 

我可以用一个可观察在这种情况下?虽然我在视图中使用异步管道,但数据仍未填充。我错过了什么吗?订阅方法是否与Observable一起使用?

所有帮助表示赞赏。谢谢!!

+1

我认为这里的问题是变化检测。你有一个数组,其中的大小是变化,但角度不知道。尝试在添加完所有项目或阅读变更检测后重置对数组的引用。 – getbuckts

回答

0

如果您使用异步管道不订阅,异步管道替换订阅可观察

相关问题