Как вставить объект пользовательского массива в смарт-таблицу ng2

https://github.com/akveo/ng2-smart-table в объекте настроек , мы определяем структуру для отображения таких полей, как имя, заголовок и т. д. Я хочу напрямую назначить объект столбцам. Объект содержит поля

only.settings = {
  editable: false,
  mode: 'inline',
  add: {
    confirmCreate: true
  },
  edit: {
    confirmSave: true,
  },
  actions: {
    delete: false
  },
  columns: {
    food: {
      title: 'Food',
      filter: false,
    },
    quantity: {
      title: 'Quantity',
      filter: false,
    },
    unit: {
      title: 'Unit',
      filter: false,
      editor: {
        type: 'list',
        config: {
          list: [
            { value: 'gm', title: 'gm' },
            { value: 'slice', title: 'slice' },
            { value: 'cup', title: 'cup' },
            { value: 'glass', title: 'glass' },
            { value: 'pcs', title: 'pcs' },
            { value: 'ml', title: 'ml' },
            { value: 'bowl', title: 'bowl' },
            { value: 'tbspn', title: 'tbspn' }
          ]
        }
      }
    },

Я должен создать

array =>units[]= { value: 'bowl', title: 'bowl' },{ value: 'tbspn', title: 'tbspn' } 

Хочу назначить =>
list: this.units

но это не работает. Это на тот случай, когда я получаю массив при вызове веб-сервиса.


person swamiag    schedule 08.06.2017    source источник


Ответы (2)


  1. Создайте массив из объектов {value: unit, title: unit}
  2. Переназначить объект настроек как новый объект

Код:

const options = [];
for (const unit of units) {
    options.push({ value: unit.val, title: unit.name });
}
this.settings.columns.unit.editor.config.list = options;
this.settings = Object.assign({}, this.settings);
person Noam Vaza    schedule 24.06.2017

После получения массива от веб-сервиса сопоставьте элементы, которые нужно преобразовать, в структуру, используемую в смарт-таблице.

Для справки по карте: Array.map < / а>

Это было бы примерно так:

config.list = unitsFromWebservice.map(function(unit) {
   return { value: unit, title: unit };
});
person hamilton.lima    schedule 21.06.2017