2017-09-20 1 views
0
fieldRender(formSets: any[]) { 

    let questions: any[] = []; 
    let q: QuestionBase<any>[] = []; 
    let index: number = 0; 

    formSets.forEach(formSet => { 
     formSet.children.forEach(child => { 
     this.appointmentService.getField(child.field.uuid).subscribe(res => { 
      let dataType; 
      let label; 
      let parent; 
      let uuid; 
      let answers = []; 

      if (res.concept != null) { 
      if (res.concept.datatype) 
       dataType = res.concept.datatype.display; 
      if (res.answers) 
       answers = res.answers; 
      } 
      uuid = res.uuid; 
      label = res.display; 
      parent = formSet.parent.field.display; 

      let question: Question = new Question(); 
      question.label = label; 
      question.type = dataType; 
      question.parent = parent; 
      question.uuid = uuid; 
      question.answers = answers; 

      questions.push(question); 

      console.log("Questions", JSON.stringify(questions)); 
     }); 
     }); 
    }); 

    } 

Ceci est mon function.What je veux cette fonction pour revenir Observable des questions que je peux vous abonner pour obtenir des données partout. Formsets est un tableau de FormSet FormSet contient un parent et un tableau des enfantsComment fusionner des données d'abonnement 2 TS en boucle angulaire

Répondre

0

Si formSet.children est un tableau, vous pouvez faire quelque chose de similaire à THI

Rx.Observable.from(formSet.children) 
.flatMap((child) => this.appointmentService.getField(child.field.uuid)) 
.subscribe((question) => questions.push(question)) 

cette façon, vous pouvez avoir toutes les réponses de getField dans un « flux »

Vous ne nous donnez pas le contexte bien que je devine;)

+0

Hey @rick merci pour la réponse que j'ai modifié le message a ajouté un peu plus du code et un peu plus de contexte .. –

+0

avez-vous essayé ma solution? Si vous avez besoin d'une sortie observable, vous pouvez créer votre question dans une carte au lieu de vous abonner – rick