Как вернуть конкретное поле массива вложенных объектов в угловых, имеющих значение поля? - PullRequest
0 голосов
/ 07 июля 2019

У меня есть такой массив вложенных объектов.

вот мой массив:

public collections: ICollections[] = [
  {
    collectionName: 'Brands',
    collectionFields: [
      {
        columnTitle : 'brandTitle',
        Type : dtEnum.string,
        control: {
          controlTitle: controlsEnum.input,
          controlType: controlsEnum.input,
          controlProperties: 
            {
              placeholder: 'Enter brand title here ...',
              type: 'text',
              autocomplete: false,
            }
        },
        columnWidth: 200
      }
    ],
    collectionFieldValidation: [{name: 'test'}],
    hasPaginator: true,
    stickyColumn: 0,
    stickyHeader: true
  },
    {
      columnTitle : 'brandURL',
      Type : dtEnum.string,
      control: {
        controlTitle: controlsEnum.input,
        controlType: controlsEnum.input,
        controlProperties: {
          placeHolder: 'Enter Brand URL',
          type: 'text',
          autocomplete: false,
        }
      },
      columnWidth: 300
    },
    {
      columnTitle : 'brandDescription',
      Type : dtEnum.string,
      control: {
        controlTitle: controlsEnum.textarea,
        controlType: controlsEnum.textarea,
        controlProperties: {
          placeHolder: 'Enter Brand Description',
          type: 'text',
          autocomplete: false,
        }
      },
      columnWidth: 300
    }
];

Я хочу добраться до placeholder поля. как найти его, имея только поле collectionName со значением Brands и поле columnTitle со значением brandURL?

этот вопрос задавался ранее только с collectionName значением поля, но я обнаружил, что мой фильтр должен включать более одного поля.

Ответы [ 2 ]

1 голос
/ 07 июля 2019

Прежде всего, найдите коллекцию, которая соответствует "Брендам" или любой другой вещи:

let result = collections.find(p => p.collectionName === "Brands");

, затем получите поле placeholder:

измените your_index на 0или ваш конкретный индекс

if (result) {
    let placeholder = result.collectionFields[your_index].control.controlProperties.placeholder;
}
0 голосов
/ 08 июля 2019

Вот мое решение:

  placeholder_finder(collectionSearchKey: string, fieldSearchKey: string): string {
    let field: any;
    let placeholder: string;
    const obj = this.genInfo.collections.filter(
      x => x.collectionName === collectionSearchKey
    );
    obj.forEach(data => {
      field = data.collectionFields.filter(
        x => x.columnTitle === fieldSearchKey
      );
    });
    field.forEach(element => {
      placeholder = element.control.controlProperties.placeHolder;
    });
    return placeholder;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...