Исходя из этой проблемы (https://github.com/javiertelioz/angular2-csv/issues/27), вы можете найти вдохновение для более динамичного решения:
У решения проблемы есть что-то вроде:
new Angular2Csv(this.data, 'myCsv', { headers: Object.keys(this.data[0]) });
На основании этого:
Создать набор, содержащий уникальные заголовки:
let headerSet = new Set();
Для каждой строки в ответе получить ключи этой строки и добавить их в набор (псевдокод)
for (r of/in response) {
headerSet.add(Object.keys(r));
}
Для части данных вы должны перезапустить процесс и проверить для каждой строки, есть ли у него определенный ключ, и если нет, нужно ли ставить и очищать значение или что-то, что вам нравится, с этим отсутствующим ключом (это сложно поскольку все значения должны быть вставлены в правильном порядке, поэтому одного только решения Set может быть недостаточно).
Когда все возможные заголовки / данные добавлены / добавлены:
new Angular2Csv(response, csvFileName, {headers: Array.from(headerSet});
Точный код должен быть составлен. Я не проверял и не знаю, что это за формат данных.