2017-03-06 37 views
0

我要呈現在循環的一些數據:錯誤荷蘭國際集團* ngFor環路Angular2

<div *ngFor="let data of parameters.items.tableConfig.nodes"> 
    <table-item [data]=data></table-item> 
    </div> 

但數據

而且我有錯誤:

EXCEPTION: Error in ./TableWidgetComponent class TableWidgetComponent - inline template:7:17 caused by: Cannot read property 'nodes' of undefined 

我怎麼能數據之前等待來,然後渲染視圖?

*ngIf="parameters && parameters.items.tableConfig.nodes「不幫助我。

+0

'parameters.items' property'tableConfig' is undefined – Brivvirs

+0

提供更多信息,例如:接口參數模型。我們是否異步訪問參數? – Ajay

回答

2

使用此

<div *ngFor="let data of parameters?.items?.tableConfig?.nodes"> 
    <table-item [data]=data></table-item> 
    </div> 

使用elevis運營商(?) [也叫safe navigation operator]它會阻止角度拋出錯誤,有益的情況下進行異步數據來像你的情況

這裏是關於這個的詳細信息

https://angular.io/docs/ts/latest/guide/template-syntax.html#!#safe-navigation-operator

+0

很酷。有用。 但是,你能和我分享這個鏈接嗎? –

+0

用鏈接@MaxKarpovets檢查我的更新 –

1

鑑於你說'我在數據到來之前如何等待,'我從異步調用中獲取數據。所以無論是Observable還是Promise。你在這裏有很多選擇;

在實際循環周圍添加if條件。

<div *ngIf="parameters.items.tableConfig">...</div>

使用safe navigation operator(?),以防止undefinednull

<div *ngFor="let data of parameters.items.tableConfig?.nodes"> 
    <table-item [data]=data></table-item> 
</div> 

使用async pipe

它接受Promise或Observable,並在Promise解析或Observable發出新值時更新視圖和響應數據。

export class MyComponent { 
    nodePromise: Promise<Node>; // e.g. with Promise. 
} 

<div *ngFor="let data of nodePromise | async"> 
    <table-item [data]=data></table-item> 
</div> 
相關問題