Итак, во-первых, как обсуждалось выше, вы обязательно должны использовать директиву [routerLink]
для маршрутизации внутри приложения.Использование href
s в основном говорит вашему браузеру, что нужно перейти к новому маршруту, и в результате отправит запрос серверу на страницу и выдаст этот новый контент (именно поэтому вы получаете 404
этот маршрут не существует на сервере, он просто интерпретируется вашим приложением Angular).
Директива [routerLink]
эффективно обновляет маршрут внутри приложения при обновлении истории навигации браузера безна самом деле получение новой страницы.Старые приложения на самом деле используют стратегию hashbang
, в то время как мы обсуждаем стратегию push state
... ( Обе обсуждаются здесь, если вы хотите узнать больше )
В любом случае,как упомянутое @Ritwick.На этом этапе вы захотите перенаправить все запросы сервера на ваш index.html
таким образом, если пользователь переходит на маршрут из-за пределов приложения, вы можете справиться с этим.Так же, как некоторые примеры фрагментов, вы можете сделать это перенаправление маршрутов, если вы используете NGINX
:
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
или если вы используете что-то вроде Firebase, вы можете обновить свой firebase.json
следующим образом:.
{
"hosting": {
"public": "dist", // if your app is in a subfolder of the dist, include that
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}