Я никогда не использовал ng2-smart-table, но не могли бы вы выполнить некоторую предварительную обработку, чтобы проверить каждое значение и удалить его, если оно дублируется?
for(let i = 0; i < data.length; i++) {
for(let j = i+1; j < data.length; j++) {
if(data[i] === data[j]) {
data.splice(j, 0);
}
}
}
Что касается добавления данных в конец, не могли бы вы сделать что-то подобное вместо того, чтобы позволить таблице обрабатывать это?
addRow(row) {
data.push(row);
}