ng2-smart-table更新列表动态

时间:2019-03-14 21:53:21

标签: angular 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' },
    ];
  }

我想念什么?

1 个答案:

答案 0 :(得分:0)

将调用ngOnInit并进行设置。关键是订阅(在不起作用的情况下)立即返回,并且ngOnInit无法初始化列表。可以这么说,“设置”不会动态更新。我发现的解决方法是:

"" + 555 + 000

当服务返回并执行预订的方法时,唯一的机会是重新加载整个 Settings 结构。

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);
}