Является ли Angular 2 Router сломанным при использовании маршрутов HTML5?
Весь этот новый синтаксис маршрутов звучал так, чтобы быть правдой, и теперь я думаю, что это на самом деле. Я сдался, пытаясь заставить его работать, и здесь я замечаю, что даже основной пример на странице Angular 2 не работает. Если вы откроете живой пример, и вы попробуете его, просто щелкнув его, он будет круто, и вы увидите, что путь в URL-адресе изменился, но он только меняет строку. Путь на самом деле не существует, если вы копируете URL-адрес и отправляете его кому-то они получат следующую ошибку:
{
"statusCode": 404,
"error": "Not Found"
}
Ад, даже если вы просто обновите страницу, вы получите ту же ошибку.
Если вы хотите воспроизвести проблему, откройте этот URL-адрес:
https://angular.io/resources/live-examples/tutorial/ts/plnkr.html
Нажмите кнопку "Запустить предварительный просмотр в отдельном окне" в правом верхнем углу предварительного просмотра, подождите, пока он загрузит страницу, и когда вы увидите, что URL-адрес изменился на что-то вроде:
http://run.plnkr.co/KMzM8hkaCyhlnf3b/dashboard
выполните F5, чтобы обновить страницу, и вы получите сообщение об ошибке.
Является ли это ошибкой, ее способ ее работы, или что-то, чего они даже не пытались? Они уже начинают снова с плохой реализации маршрутизатора, или я просто полностью потерял то, как я пытаюсь заставить его работать? Пожалуйста, совет!
Я предполагаю, что мне лучше использовать реализацию hashtag.
Ответы
Ответ 1
Фактически, при загрузке приложения с ошибкой 404 у вас возникает ошибка с момента обновления фактического адреса в браузере (и без подхода #/hashbang). По умолчанию история HTML5 используется для повторного использования в Angular2.
Если вы не хотите иметь ошибку 404, вам необходимо обновить свой сервер, чтобы обслуживать файл index.html для каждого маршрута маршрута.
Эта ссылка также может помочь вам: Когда я обновляю свой сайт, я получаю 404. Это с Angular2 и firebase.
Надеюсь, это поможет вам,
Thierry
Ответ 2
То, что было разработано (по HTML5 не введено Angular). Перейдите в HashLocationStrategy или используйте сервер, который знает, как обрабатывать (перенаправлять) такие запросы.
См. Также https://github.com/angular/angular/issues/4735