Ng2-smart-table привязывает событие кнопки "Добавить новый" к внешней кнопке
Я использую плагин ng2-smart-table для таблицы. Есть Add new
кнопка, чтобы добавить запись в таблицу.
Но я просто хочу вызвать 'Add new'
событие от внешней кнопки (может быть верхней частью таблицы, но не внутри таблицы). В ng2-smart-таблице уже есть функция, полностью противоположная моим требованиям. Это может быть достигнуто с помощью 'mode:external'
В настоящее время это открыто с их страницей Github как проблема.
Если у них нет опции с Ng2-smart-таблицей. Есть ли способ привязать событие к другим кнопкам (внешним) в Angular 6? Если да, пожалуйста, дайте мне, как это сделать в Angular 6.
Любая помощь будет принята с благодарностью.
2 ответа
Вы можете вызвать событие создания ng2-smart-таблицы через событие объекта DOM.
Допустим, настройки кнопки добавления моей ng2-smart-таблицы
add: {
addButtonContent : '<span class="add"><i class=""></i></span>',
createButtonContent:'<i class="far fa-save"></i>',
cancelButtonContent: '<i class="fas fa-times"></i>',
confirmCreate: true,
}
затем по нажатию вашей внешней кнопки вызвать нажатие кнопки "Добавить" в ng2-smart-таблице, как
onAdd(event) {
$(".add").click();
}
Вам необходимо использовать LocalDataSource или ServerDataSource.
У меня был тот же вопрос, и после того, как я попробовал несколько примеров, я увидел хороший здесь. В этой части кода они используют метод источника данных load(data) с источником (LocalDataSource):
constructor(protected service: BasicExampleLoadService) {
this.source = new LocalDataSource();
this.service.getData().then((data) => {
this.source.load(data);
});
}
Затем я пытаюсь с моим кодом и сделал то же самое с LocalDataSource, но чтобы добавить строку в таблицу, я сделал это:
this.source.add({
name: 'name',
description: 'desc',
numQuestions: '8',
});
this.source.refresh();
И это работает для меня. Я надеюсь, что это помогает.
Попробуйте это: на вашем HTML:
<button (click)="addRecord()">Add</button>
<ng2-smart-table #smartTable [settings]="settings" [source]="source"></ng2-smart-table>
на вашем компоненте:
@ViewChild('smartTable') smartTable;
.
.
.
addRecord() {
this.smartTable.grid.createFormShown = true;
this.smartTable.grid.getNewRow();
}