Сегодня столкнулся с причудой в библиотеке ng2-file-upload и хотел задокументировать ее на случай, если кто-то еще борется с той же проблемой.

Получение ответа от вашего API должно быть простым вызовом хука жизненного цикла onCompleteItem(). Однако при использовании данных response response[‘data’] (или любое другое свойство JSON, к которому вы можете попытаться получить доступ) будет не определено. Почему это произошло?

Взглянув на функцию onCompleteItem, мы видим:

onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

Ах ха! Как ни странно, код не проверяет тип возвращаемого значения (в моем случае из бэкенда API Node.js это JSON) и приводит все случаи в виде строки.

Простое исправление — просто перевернуть его обратно в JSON:

let result = JSON.parse(response);

Очевидно, вы захотите обернуть это какой-нибудь логикой try/catch или другой обработкой ошибок в рабочей среде, но я надеюсь, что это сэкономит вам несколько минут на обнаружение неожиданной ошибки.