ForEach внутри ForEach в реактивных формах Angular 4

Как я могу указать forEach дату истечения срока действия, если у меня есть один и тот же ингредиент, но с другим сроком годности. Я имею в виду, что у меня должен быть раскрывающийся список, в котором можно было бы выбрать ингредиент и вывести каждую другую дату истечения срока действия. Моя проблема, как я могу сделать ForEach внутри моего Foreach? Вот моя ссылка на stackblitz.

ССЫЛКА НА КОД ЗДЕСЬ

TS

 patchValues() {
    let rows = this.addForm.get('rows') as FormArray;
    this.ingredients.forEach(data => {
      rows.push(this.fb.group({
      ingredient_id: data.id,
      qty_available: data.qty_available,
      qty: ['', Validators.required],
      expiration_date: "How to ForEach HERE?",
    }))
    })
  }

person Joseph    schedule 23.01.2018    source источник


Ответы (1)


почему бы не создать/использовать определенный класс объектов и определенный массив объектов для определения ваших данных вместо этого большого фрагмента определения вложенного объекта/JSON?

Ингредиент состоит из идентификатора, имени и массива складских элементов.

складской элемент - это имя идентификатора, имя, общий запас и т. д.

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

вот небольшой пример, который я сделал: https://stackblitz.com/edit/form-array-patch-fkhayr

person Asura    schedule 23.01.2018
comment
Я не могу этого сделать, так как бэкенд уже предоставляет бэкэнд. Он уже внутри ингредиентов - person Joseph; 23.01.2018
comment
вы можете автоматически сопоставить ответ от бэкенда с этим объектом; им просто нужно одно и то же имя свойства. Я предполагаю, что серверная часть возвращает список ингредиентов - person Asura; 23.01.2018
comment
почтовый код/логика о том, как ваш интерфейс angular получает информацию от бэкэнда. Не могу помочь с текущим кодом, так как ваш код JSON полностью статичен внутри файла ts, и нет кода, связанного с получением/отображением данных JSON из бэкэнда; если вы никогда этого не делали, тогда вам нужно начать с этого в первую очередь. - person Asura; 23.01.2018
comment
Вот как мой код возвращается из бэкэнда. Когда ngOnInit запускается, он неожиданно вызывает метод patchValues(). Склад_предметов уже находится внутри ингредиентов - person Joseph; 23.01.2018
comment
это не бэкенд! ; это просто статические данные на вашем интерфейсе (угловые) в форме JSON, но, несмотря на это, ничто не мешает вам удалить весь JSON и заменить его объектами/массивом объектов, а затем показать значения obj, как я сделал для первой строки в моем примере; я тоже обновлю его с выпадающим списком ингредиентов. - person Asura; 23.01.2018
comment
Да это не бэкенд. это ответ json, исходящий от бэкэнда. Это структура json. Не могли бы вы реализовать мой ответ json на свой код? - person Joseph; 23.01.2018
comment
Одна вещь. В раскрывающемся списке ингредиентов должно быть то же название/идентификатор ингредиента. Если имя/идентификатор ингредиента отличается, он должен создать новую строку. Если вы щелкнете раскрывающийся список, он должен отфильтровать дату истечения срока действия. - person Joseph; 23.01.2018