Angular 6 маршрутизация работает с NG служить, а не Visual Studio - PullRequest
0 голосов
/ 03 июля 2018

Я чувствую, что это глупый вопрос, но я новичок в Angular и нигде не могу найти ответ ...

Я пытаюсь настроить маршрутизацию в новом приложении Angular 6. Я могу перенаправить к компоненту очень хорошо, когда я работаю из командной строки, используя ng serve, но не когда я работаю из Visual Studio. Это просто базовая маршрутизация.

Маршруты, определенные в app-routing.module.ts:

const routes: Routes = [
  { path: '', component: MaintenanceComponent },
  { path: 'merchants', component: MaintenanceComponent }  
];

тег розетки в app.component.html:

<div style="text-align:center">
  <h1>
    Welcome to {{ title }}!
  </h1>
</div>
<router-outlet></router-outlet>

Интересно, что я могу сказать, что маршрутизатор распознает запрос к корню во время работы в VS, поскольку он возвратит 404 без {path: '', component: MaintenanceComponent}. Однако попытка доступа / торговцев возвращает 404 независимо. Так что это ключ.

Какую простую вещь мне не хватает?

В проекте используется .NET Core Web API.

1 Ответ

0 голосов
/ 04 июля 2018

Это потому, что когда клиент делает запрос для / merchants, серверу необходимо вернуть index.html для запуска угловой маршрутизации. Это можно сделать с помощью перезаписи URL-адреса IIS, добавив в ваш web.config:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Angular Routes" stopProcessing="true">
        <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

Это говорит iis переписать все запросы, которые не являются допустимыми файлами или каталогами, в / url

...