Я следую знаменитому туториалу по Angular, Tour of Heroes, но у меня не получается сделать один шаг.
На шестой курс, HTTP мы используем инструмент, созданный для имитации вызовов API к API.
Я думаю, что выполнил все шаги, вплоть до эта точка, где указано следующее:
Refresh the browser. The hero data should successfully load from the mock server.
Но я, возможно, что-то упустил: все HTTP-вызовы выдают заголовки http 500 с ошибкой Object(...) is not a function.
Я что-то упустил по поводу создания маршрута? Мне кажется странным, что API-интерфейс inMemory wep не нуждается в маршруте.
Мой тестовый код доступен здесь: https://github.com/MarcBrillault/tourOfHeroes/tree/StackOverflow
У меня буквально НЕТ кода на стороне сервера, потому что, насколько я понимаю, inMemory Wep API предназначен для захвата этих вызовов и ответа на них (с этим файлом конфигурации: github.com/MarcBrillault/tourOfHeroes/blob/StackOverflow/src /…)





Вот что мне пришлось сделать, чтобы запустить ваш код после его извлечения из репозитория.
Сначала перешел на [email protected]. Это означает изменение версии в package.json на ^0.5.4 и запуск npm i.
"angular-in-memory-web-api": "^0.5.4",
Я слышал кое-где, что у некоторых были проблемы с версией angular-in-memory-web-api 0.6.0, так что это был первый шаг, который я попробовал.
Согласно это, angular-in-memory-web-api версии 0.6.0 требует Угловой «^ 6.0.0-rc.0» и RxJS «^ 6.0.0-beta.1».
Итак, переход на более раннюю версию должен подтолкнуть вас к дальнейшему продвижению учебника. Не стесняйтесь переходить к версиям Angular и RxJS, указанным выше, когда будете готовы.
Затем мне нужно было внести эти изменения в hero.service.ts.
Добавлен этот импорт:
import { of } from 'rxjs/observable/of';
Измените это:
getHero(id: number): Observable<Hero> {
return Observable.of({id: 1, name: 'test'});
}
к этому:
getHero(id: number): Observable<Hero> {
return of({id: 1, name: 'test'});
}
После этого все заработало. Надеюсь, что это помогает вам.
Похоже, есть проблема с версией 0.6.0, я понизил до 0.5.4, и это решило мою проблему, спасибо
@Torai Они привязали 0.6.0 к новой версии Angular 6.0.0-rc. Так что, если вы не используете эту версию, это не сработает. Рад, что это помогло тебе.
ах хорошо, я этого не знал, спасибо за эту информацию
Спасибо, я использовал Angular 5, и после установки правильной версии пакета и настройки dataEncapsulation: true в app.module.ts он загружал данные. Спасибо.
Если сервер возвращает 500, похоже, что ошибка может заключаться в коде на стороне сервера, а не в угловом коде на стороне клиента.