2016-11-04 24 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

但这将自动添加到表,也是我的函数添加这火力地堡db,然后它会自动更新2个实例的表,从firebase和其他的解决。 –

+0

我不明白你的问题,你能给我更多的解释 –

+0

问题是,我将这个新的数据添加到Firebase列表。这个列表绑定到表中的数据源,然后在表中更新它,然后如果我会按照你的方式更新表的功能,我将有2个实例,一个是解析和其他的虚拟结果一个由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

这不是厕所ks正确,因为它的触发器onCreateConfirm一旦用户点击加号,并且应该在用户填充所有数据后才触发 –

+1

用于自定义添加/编辑/删除功能的旧帖子 –

+0

我不认为你是对的!你没有阅读这篇文章。它将表2写入表2的问题,因为它绑定到Firebase列表并执行解决。 –

0

的问题是在该表的组合angularfire,我认为它的某种错误。
我正在使用AngularFire2测试表格,并且遇到同样的问题。为了避免这种(自制)的唯一方法是:

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

当U编辑,并触发保存按钮它重新加载所有,但如果重装的大小+原始大小比pager.perPage下限ü不需额外看到重复的东西。这是我的方法:

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,但如果u有一个更高的值pager.perPage财产U将不会看到重复的项目。测试。然而it'sa坏的解决方案,但我真的觉得it'sa smarttables

的错误希望它可以帮助5个月后^^”