2016-11-04 3 views
1

Я получаю данные от firebase и показываю ее с ng2-smart-table. Моя проблема с тем, что кнопка создания не закрывается после добавления данных. он все еще открыт с добавленными значениями. Мой код:Кнопка создания ng2-smart-table работает неправильно

settings = { 
    pager:{perPage:50}, 
    add: { 
     addButtonContent: '<i class="ion-ios-plus-outline"></i>', 
     createButtonContent: '<i class="ion-checkmark"></i>', 
     cancelButtonContent: '<i class="ion-close"></i>', 
     confirmCreate: true, 


    }, 

и добавлена ​​функция:

onCreateConfirm(event): any { 
    //this service is updating the new data to firebase. 
    this.service.createData(event.newData); 
    //after that the newdata still on edit mode and not closing it... 
    } 

ответ

1

вы должны добавить эту строку в конце onCreateConfirm (событие)

event.confirm.resolve(event.newData); 
+0

, но это автоматически добавит к столу, а также моя функции добавить это firebase db, а затем он автоматически обновит таблицу для 2 экземпляров один из firebase и других для решения. –

+0

Я не могу понять вашу проблему, можете ли вы дать мне больше объяснений –

+0

, проблема в том, что я добавляю эти новые данные в список firebase. этот список привязывается к источнику данных из таблицы, а затем его обновляется в таблице, а после этого, если я сделаю это, он обновит таблицу по его функциональности, и у меня будет 2 instanse, один - фиктивный результат решения и другие один из списка firebase. –

1

Добавьте это в вашем template html

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

Компонент

settings = {delete: { 
     confirmDelete: true 
    }, 
    add: { 
     confirmCreate: true 
    }, 
    edit: { 
     confirmSave: true 
    }, 
    ....... 
    } 


    source: LocalDataSource; 

    constructor() { 
    this.source = new LocalDataSource(this.data); 
    } 

    onDeleteConfirm(event):void { 
    if (window.confirm('Are you sure you want to delete?')) { 
     event.confirm.resolve(); 
    } else { 
     event.confirm.reject(); 
    } 
    } 

    onSaveConfirm(event):void { 
    if (window.confirm('Are you sure you want to save?')) { 
     event.newData['name'] += ' + added in code'; 
     event.confirm.resolve(event.newData); 
    } else { 
     event.confirm.reject(); 
    } 
    } 

    onCreateConfirm(event):void { 
     event.confirm.resolve(event.newData); 
    } 
+0

это не loo ks правильно, потому что его триггер onCreateConfirm как только пользователь нажимает на плюс и должен запускаться только после заполнения пользователем всех данных –

+1

Старый пост, используемый для пользовательских функций добавления/редактирования/удаления –

+0

Я не думаю, что вы правы! вы не читали сообщение. проблема в том, что он записывает в таблицу 2 раза один, потому что он связывается с списком firebase и secont, который вы разрешаете. –

0

Проблема заключается в angularfire в сочетании с этой таблицей, я думаю, что некоторые его рода ошибки.
Я тоже тестирую стол с AngularFire2, и у меня такая же проблема. Единственный способ избежать этого (самодельный) является:

settings = { 
    pager: { 
     perPage: 1000 
    }... // More settings, add, edit, actions, etc 

Когда у редактирования и запуска кнопку сохранить его перезагрузить, но если перезагруженная размер + оригинальный размер ниже предела pager.perPage у won't см. дублированные вещи. Это мой метод:

onEditConfirm(event): void { 
    console.log(event.data); // Testing only 
    console.log(event.newData); // Testing only 
    this.af.database.object('Usuarios/' + 
    event.data.nif.toLowerCase()).set({ 
     email: event.data.email, 
     nombre: event.newData.nombre, 
     nif: event.data.nif, 
     rol: event.data.rol 
    }); 
    this.source.update(event.data, event.newData); //it update well 
    event.confirm.resolve(event.newData); 
} 

Теперь, если мы предположим, что мы имеем 70 строк будет дублировать до 140, но если и есть свойство pager.perPage на более высокое значение у не будет видеть дублированные элементы. Проверено. Однако it'sa плохое решение, но я действительно думаю, что эпидермальная ошибка из smarttables

Надеется, что это помогает через 5 месяцев ^^»