2017-08-24 5 views
0

Ich verwende einen Resolver, um alle Modelldaten aus meiner Datenbank abzurufen, die mit einer bereitgestellten ID übereinstimmen. Also, sage ich mir all die Modelldaten, wo detailID = 140 an, alle Ergebnisse in einem Array zurückgibt, wo das Element, dass detailIDAbrufen von Informationen aus einem bestimmten Index aus den Resolver-Daten

dh 0: {detailId: 140, area: 4, depth: 1, complete: false} 1: {detailId: 140, area: 5, depth: 4, complete: false} 2: {detailId: 140, area: 6, depth: 8, complete: false} 3: {detailId: 140, area: 7, depth: 10, complete: false} 4: {detailId: 140, area: 8, depth: 3, complete: false} 5: {detailId: 140, area: 9, depth: 3, complete: false}

ich den Tiefenwert erhalten möchten hat so kann ich dynamisch den Wert durch Formbuilder wie so zuweisen für jeden bestimmten Bereich (der für diese Zwecke Fläche: 4 = Index4 usw.):

(I irgendwie dachte den Index/Flächenwert an eine Funktion wo wird es dort berechnet?)

this.detailForm = new FormBuilder().group({ 
     index4: [this.getDepth(4)], 
     index5: [this.getDepth(5)], 
     index6: [this.getDepth(6)] 
    }); 

Und für eine Funktion etwas entlang der Linien von dieser mit:

getDepth(index: number) { 
    // return depth value where area == index 
} 

Wie kann ich diese Arbeit machen?

+0

Index4: [this.resultArray [0] .depth] – Vega

+0

@Vega edit: vergiss es, gibt es Fälle, in denen die Indizes wird sich ändern, denn wenn der Wert für einen bestimmten Bereich null ist, wird er nicht geladen, was den Index für nachfolgende Einträge durcheinander bringen würde. – CodyCS

Antwort

0

Ich habe es herausgefunden:

index4: [this.getDetailAreaDepthByIndex(4)] 

dann

getDetailAreaDepthByIndex(index: number): number { 
    if (!this.detailArea) 
     return null; 

    let filteredItems = this.detailArea.filter(i => i.area === index) || []; 

    return filteredItems.length > 0 ? filteredItems[0].depth : null; 
} 
Verwandte Themen