私はグループオブジェクトのリストとライトオブジェクトのリストの配列を格納するために配列を使います。 htmlの最初のグループとそのグループに接続されているすべてのライトを表示したいとします。後、私はこれを実行しようとすると次のグループなどに関連するライトと....Angular2 Nested * 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では構文が間違っていると思います。上から "group"を呼び出すことは可能です。
EDIT: これはMyHue.Groupsのオブジェクトがどのように見えるかの重要な部分である:Groupオブジェクトで
{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"…}
のTh
Object {1: Object, 3: Object, 4: Object}
は、だから私はライトIDがどのグループに、そして
'* ngFor'を' object'と一緒に使っているようです。 '* ngFor'は' '配列 ''だけで動作します。あなたはパイプを作成し、 '* ngFor'を使って' hueLights'のキーを反復することができます。 – developer033
これには例がありますか?私は角2にはかなり新しいです。 – WeSt
'hueLights'と' hueGroups'の内容を含めて、これを理解することをお勧めします。 – developer033