Значения карты из вложенного набора данных - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь отобразить определенные значения из определенного набора данных, но не могу получить все данные.

* Набор данных *

 this.medOptions = [
        {
          "selectedMAP": [
            {
              "mapId": 1,
              "mapName": "medtest3",
              "options": [
                {
                  "optionId": 1,
                  "optionName": "medoptiontest3",
                  "optionPrice": 1000
                }
              ]
            },
            {
              "mapId": 2,
              "mapName": "medtest4",
              "options": [
                {
                  "optionId": 2,
                  "optionName": "medoptiontest4",
                  "optionPrice": 2000
                }
              ]
            }
          ]
        }
     ]

функция отображения

 initDynamicMedicalAidModel(): TemplateDynamicMedicalAid {
    return {
      dynamicPlanOptions: this.medOptions.map(x => ({
        isSelected: false,
        name: x.selectedMAP[0].options[0].optionName,
        amount: x.selectedMAP[0].options[0].optionPrice
      }))
    };
 }

В настоящее время я могу получить первый набор значений с помощью [0], но изо всех сил пытаюсь получить их все динамически.

модель

export interface TemplateDynamicMedicalAid {
  dynamicPlanOptions: Array<{ isSelected: boolean, name: string, amount: number }>;
}

TS

 @Input() medicalAidDynamic: TemplateDynamicMedicalAid;

HTML

 <div *ngFor="let plan of medicalAidDynamic.dynamicPlanOptions; let index = index;" class="line">
        <p-checkbox 
          binary="true" 
          [disabled]="mode == 'view'" 
          [(ngModel)]="medicalAidDynamic.dynamicPlanOptions[index].isSelected" >
        </p-checkbox> 
        {{ plan.providerName }}: {{ plan.name }} -  R{{ plan.amount | number:'':'en' }}
      </div>
 </div>

Как получить все значения в мой набор данных в функции карты?

1 Ответ

1 голос
/ 03 апреля 2020

Вместо зацикливания на this.medOptions вы должны l oop over medOptions[0].selectedMAP, чтобы отобразить данные.

const medOptions = [
        {
          "selectedMAP": [
            {
              "mapId": 1,
              "mapName": "medtest3",
              "options": [
                {
                  "optionId": 1,
                  "optionName": "medoptiontest3",
                  "optionPrice": 1000
                }
              ]
            },
            {
              "mapId": 2,
              "mapName": "medtest4",
              "options": [
                {
                  "optionId": 2,
                  "optionName": "medoptiontest4",
                  "optionPrice": 2000
                }
              ]
            }
          ]
        }
     ];
     
    function getObj(arr){
     return {
      dynamicPlanOptions: medOptions[0].selectedMAP.map(x => ({
        isSelected: false,
        name: x.options[0].optionName,
        amount: x.options[0].optionPrice
      }))
    };
    } 
 let y = getObj(medOptions) ;
 console.log(y);

PS: Это работает, только если medOptions имеет только один элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...