дублировать отображение новых данных в смарт-таблице в angular 4

Я работаю над угловым проектом, когда добавляю новую строку в таблицу, я получаю правильные данные в своей службе, но в таблице они отображаются 2 раза.

Выше мой умный код таблицы.

    <ng2-smart-table [settings]="settings" [source]="source"  (createConfirm)="onCreateConfirm($event)">
    </ng2-smart-table>

Ниже приведена функция сохранения.

 add: {
      addButtonContent: '<i class="nb-plus"></i>',
      createButtonContent: '<i class="nb-checkmark"></i>',
      cancelButtonContent: '<i class="nb-close"></i>',
      confirmCreate: true,
    },

    onCreateConfirm(event): void {
if (window.confirm('Are you sure you want to create?')) {
      event.newData['name'] += ' + added in code';
      event.confirm.resolve(event.newData);
      CoursesService.addNewCourse(event.newData);

    } else {
      event.confirm.reject();
    }
  }    
      }

Функция addNewCourse в сервисе выглядит следующим образом:

static addNewCourse(data)
{
        this.coursedata.push(data);
    console.log(this.coursedata);
}

В данных курса я получаю данные только один раз, а в таблице они отображаются 2 раза.

любая помощь?


person Faisal Amdani    schedule 09.02.2018    source источник
comment
То есть при начальной загрузке в вашей таблице нет двойных записей? Если вы добавляете новые данные, эти данные дублируются в вашей таблице? Если это так, то event.confirm.resolve(event.newData) добавляет данные в таблицу, а ваш CoursesService добавляет новые данные в вашу таблицу.   -  person SplitterAlex    schedule 09.02.2018
comment
@SplitterAlex, тогда что мне делать?   -  person Faisal Amdani    schedule 09.02.2018
comment
Я раньше не использовал ng2-smart-table, но в соответствии с документацией вы можете установить свойство mode со значения по умолчанию inline на external. Описание: Определяет, как реагировать на ссылки действий (Добавить, Изменить, Удалить). «внешний» - просто инициируйте события (ССЫЛКА ЗДЕСЬ). 'inline' - обрабатывать внутри, показывать формы/вводы/и т. д. Поэтому, если вы установите для параметра значение external, будут применяться только ваши изменения из вашей выделенной службы.   -  person SplitterAlex    schedule 09.02.2018
comment
Режим @SplitterAlex должен быть встроенным, и у меня это сработало, я дважды отправлял данные, поэтому они отображались 2 раза, поэтому я дал ему ответ   -  person Faisal Amdani    schedule 10.02.2018


Ответы (1)


Я снова отправлял данные в функцию addNewCourse(), поэтому мне пришлось их удалить. Поскольку event.confirm.resolve(event.newData); отправляет данные, поэтому addNewCourse() должен быть следующим

static addNewCourse(data)
{
    console.log(this.coursedata);
}
person Faisal Amdani    schedule 10.02.2018