2016-10-25 7 views
0

Я создал приложение angular2 & успешно развернуло его.Маршрутизация не работает после развертывания в angular2

приложение запускается правильно после некоторого времени на загрузку &, тогда я могу перейти к различным компонентам.

, но когда я ставлю прямой адрес в URL, как:

www.sample.com/about 

это говорит об ошибке 404.

, даже если я создаю пакет, используя ng build --prod, он создает dist папку правильно & Я могу перейти к различным компонентам, используя только ссылки.

, но я не могу получить компоненты доступа непосредственно из URL-адреса в моей локальной системе.

Я использую http-server.

Есть ли дополнительные конфигурации, необходимые для его работы?

+0

В моем случае ng обслуживает отлично, locahost/doesnot. Я сохранил console.log в своем app.component.ts ngOnInit(). Это показывает в localhost после этого ничего не происходит. – Ziggler

ответ

0

Вы используете узел в качестве сервера развертывания? Или вы используете IIS или аналогичные серверы.

Мое лучшее предположение, когда вы запускаете с сервера, он не находит ресурс, который вы ищете в этом примере about. вам необходимо правильно настроить маршрут на своем сервере.

Если вы используете IIS, вам придется использовать переписывание URL или маршрутизацию MVC для обслуживания ресурса по умолчанию, если необходимо обслуживать неизвестный ресурс.

В местных случаях, когда вы используете ng serve или используете lite-server, они заботятся об этих неизвестных дорогах.

Надеюсь, что это поможет!

+0

Если я использую IIS, то как я могу настроить свой сервер для этого? @MadhuRanjan –

+0

Вы можете проверить это [Ссылка] (https://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module) для перезаписи URL-адресов или вы можете настроить маршрут по умолчанию, как это приведет к перенаправлению всего маршрута на главный контроллер в MVC, и у вас может быть содержимое индексного файла там, routes.MapRoute ( «По умолчанию», // имя маршрута «{controller}/{action }/{id} ", // URL с параметрами * new {controller =" Home ", action =" Index ", id = UrlParameter.Optional} ); –

1

Эта проблема решается путем реализации HashLocationStrategy, которая добавляет # ко всем вашим маршрутам. Вы достигаете этого, добавляя HashLocationStrategy к поставщикам AppModule.

providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}], 

и добавить соответствующий импорт

import { HashLocationStrategy, LocationStrategy } from '@angular/common'; 

Это решило проблему.

+0

официальная документация: https://angular.io/docs/ts/latest/guide/router.html#!#browser-url-styles –