Подтвердить что ты не робот

Является ли 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.

4b9b3361

Ответ 1

Фактически, при загрузке приложения с ошибкой 404 у вас возникает ошибка с момента обновления фактического адреса в браузере (и без подхода #/hashbang). По умолчанию история HTML5 используется для повторного использования в Angular2.

Если вы не хотите иметь ошибку 404, вам необходимо обновить свой сервер, чтобы обслуживать файл index.html для каждого маршрута маршрута.

Эта ссылка также может помочь вам: Когда я обновляю свой сайт, я получаю 404. Это с Angular2 и firebase.

Надеюсь, это поможет вам, Thierry

Ответ 2

То, что было разработано (по HTML5 не введено Angular). Перейдите в HashLocationStrategy или используйте сервер, который знает, как обрабатывать (перенаправлять) такие запросы. См. Также https://github.com/angular/angular/issues/4735