我使用一個數組來存儲組對象列表和一個光對象列表數組。 我想要顯示HTML中的第一組以及所有連接的燈。在此之後,下一個組,相關的指示燈等....Angular2嵌套* ngFor
<div>
<ul>
<li *ngFor="let group of hueGroups">
{{group.name}}
<li *ngFor="let light of hueLights; let i = index">
{{hueLights[group.lights[i]].name}}
</li>
</ul>
</div>
export class AppComponent implements OnInit {
hueGroups:any[];
hueLights:any[];
constructor(){
this.hueGroups = [];
this.hueLights = [];
}
listAllGroups(){
for(var g in MyHue.Groups){ //MyHue.Groups returen an array with objects
console.log(g);
console.log(MyHue.Groups[g].name);
for(var id:number = 0; id < MyHue.Groups[g].lights.length; id++){
console.log("LightID:" + MyHue.Lights[MyHue.Groups[g].lights[id]].name); // Returns the name of the Lights
}
this.hueGroups.push(MyHue.Groups[g]);
}
listAllLights(){
for(var l in MyHue.Lights){ //MyHue.Lights returns an array with objects
console.log(MyHue.Lights[l]);
this.hueLights.push(MyHue.Lights[l]);
}
}
}
如果我嘗試運行此我得到的錯誤
無法讀取屬性「燈」未定義
所以我認爲嵌套ngFor語法是錯誤的。應該可以從上面調用「組」。
編輯: 這是的MyHue.Groups的物體看起來像的重要組成部分:
{action:Object
class:"Living room"
lights: Array(2)
0:"3"
1:"1"
name:"Room1"}
在組對象有其根據這個燈的唯一的ID組
這是一個輕的物體看起來像的重要組成部分:
{state: Object, type: "Extended color light", name: "Couch1", modelid: "LCT007"…}
釷是是我所得到的,如果我打印孔陣列控制檯:
Object {1: Object, 3: Object, 4: Object}
所以我要匹配光ID在該組,然後檢查燈光對象的名稱
看起來好像你正在試圖用'* ngFor'和'object'。 '* ngFor'只能與'Arrays'一起使用。你可以創建一個管道並使用'* ngFor'來遍歷'hueLights'的鍵。 – developer033
你有這樣的例子嗎?我對Angular 2非常新穎 – WeSt
包含「hueLights」和「hueGroups」的內容,因此理解它會更好。 – developer033