динамически обновлять список ng2-smart-table

У меня есть ngx-form-settings и выпадающий объект в столбце. Это раскрывающееся меню должно быть заполнено запросом (через вызов службы).

Это настройки:

site: {
title: 'SITE',
    type: 'html',
            editor: {
              type: 'list',
              config: {
                list: [],
              },
            }
          },

если я это сделаю, это сработает (проклятие, это не то, что мне нужно, поскольку setList должен быть в getData.subscribe):

  ngOnInit() {
    this.service.getData().subscribe((data: any) => {
    });
    this.setList();
  }

если я это сделаю, это не сработает:

  ngOnInit() {
    this.service.getData().subscribe((data: any) => {
        this.setList();
    });
  }

где список наборов - это просто (пока):

  setList() {
    this.settings.columns.site.editor.config.list = [{ value: 'Option 1', title: 'Option 1' },
            { value: 'Option 2', title: 'Option 2' },
            { value: 'Option 3', title: 'Option 3' },
            { value: 'Option 4', title: 'Option 4' },
            { value: 'Option 5', title: 'Option 5' },
            { value: 'Option 6', title: 'Option 6' },
    ];
  }

что мне не хватает?


person Kasper    schedule 14.03.2019    source источник


Ответы (1)


Я смог понять это,

Вызывается ngOnInit и задает настройки. Дело в том, что подписка (в случае, если это не работает) возвращается немедленно, и ngOnInit не может инициализировать список. "Настройки" динамически не обновляются, так сказать. Я нашел обходной путь:

ngOnInit() {
    this.service.getData().subscribe((data: any) => {
    this.settings.columns.site.editor.config.list = [
        { value: 'Option 1', title: 'Option 1' },
        { value: 'Option 2', title: 'Option 2' },
        { value: 'Option 3', title: 'Option 3' },
        { value: 'Option 4', title: 'Option 4' },
        { value: 'Option 5', title: 'Option 5' },
        { value: 'Option 6', title: 'Option 6' }];
    });
    this.settings = Object.assign({}, this.settings);
}

когда служба возвращает и выполняет подписанный метод, единственный шанс - перезагрузить всю структуру Settings.

this.settings = Object.assign({}, this.settings);
person Kasper    schedule 15.03.2019
comment
Работает как шарм. Спасибо друг - person Johnyoat; 10.09.2019
comment
та же проблема, не могу поверить, что у нас нет собственного решения - person unruledboy; 22.10.2019
comment
ты мой герой!. Спасибо - person Renjith; 10.08.2020