Функция редактирования, показывающая значение (Id), отличное от указанного в ng2-smart-table

Я использовал таблицу ng2-smart в своем приложении angular 6. Один из его столбцов должен отображать access_type, я получаю его из источника, используя valuePrepareFunction. Пример. access_id = 1, access_type = Тип1. Таким образом, при перечислении этих данных в таблице он правильно показывает access_type, но когда я редактирую эту строку с помощью кнопки редактирования, таблица ng2-smart показывает, что отображается access_id, а не access_type. Нужно ли мне вносить какие-либо изменения для отображения тех же данных в режиме редактирования в качестве списка отображения? Ниже приведен мой код для этого столбца:

access_id: {
        title: 'Access Type',
        editable: false,
        filter: {
          type: 'list',
          config: {
            list: [],
          },
        },
        valuePrepareFunction: (cell, row) => {
          return row.access_type;
        },
      }

Заранее спасибо.


person nik    schedule 24.09.2019    source источник


Ответы (1)


Да, вам нужен отдельный список для редактора, как и для фильтрации.

Если вы используете раскрывающийся список для редактирования, это было бы идеально, поскольку в нем можно использовать access_type в качестве заголовка и access_id в качестве значения.

Я могу только предположить, что это поможет вам, основываясь на предположениях о том, как выглядит ваша структура данных. Можете ли вы дать мне образец того, как выглядит один из элементов массива? У нас есть вложенный объект?

Вот небольшой код, который поможет:

    type: {
      title: 'Type',
      valuePrepareFunction: type => {
        return type.abbr;
      },
      filter: {
        type: 'list',
        config: {
          selectText: 'ALL',
          list: this.typeList
        }
      },
      editor: {
        type: 'list',
        config: {
          selectText: 'Select ...',
          // list: [{value: 'access_idvalue', title: 'access_type'}]
          // use the line above to hard code your list, or the line below
          // if you are loading the list dynamically
          list: this.typeList
        }
      },
      filterFunction(type?: any, search?: string): boolean {
        if (type._id === search) {
          return true;
        } else {
          return false;
        }
      }
    },
person mcadio    schedule 01.10.2019