2016-07-14 6 views
1

У меня есть очень простое приложениеAngular2 маршрутизация - руководство по URL навигация

Мой app.component.html выглядит следующим образом:

<a [routerLink]="['/Test']">CLICK ME</a> 
<div class="main-container"> 
    <router-outlet></router-outlet> 
</div> 

Мой app.component.ts выглядит следующим образом:

@Component({ 
    selector: 'app', 
    templateUrl: 'app/app.component.html', 
    directives: [HomeComponent, TestComponent, ROUTER_DIRECTIVES] 
}) 

@RouteConfig([ 
    {path: '/', component: HomeComponent, as: 'HomeComponent'}, 
    {path: '/test', component: TestComponent, as: 'Test'} 
]) 

export class AppComponent { } 

чтобы перейти к моему приложению, я иду в

http://localhost/app 

Который работает идеально, он переводит меня на мой домашний компонент, как и ожидалось. Когда я нажимаю «CLICK ME» кнопку, я переходите к

http://localhost/app/test 

И мой тестовый компонент отображается как ожидалось ... ОДНАКО, если я вручную перейти к

http://localhost/app/test 

Мой домашний компонент загружается вместо моего тестового компонента ... что дает? Как настроить маршрутизацию, чтобы ручная навигация к тестовому URL-адресу фактически возвращала представление моего тестового компонента в розетку маршрутизатора? Это возможно? Я не хочу, чтобы перейти на целевую страницу, каждый раз, когда ...

+0

Установили ли вы базу href в index.html? это должно быть как [docs suggest] (https://angular.io/docs/ts/latest/guide/router.html#!#base-href) '' –

+0

, что твой угловая версия2? –

+0

beta17, base href в порядке, у меня есть правило перезаписи для автоматического /app/index.html, которое, как я думал, было необходимо для того, чтобы заставить PathLocationStrategy работать ... но он не ... с использованием сервера node lite – Mames

ответ

1

В новом маршрутизаторе especification вам нужно что-то вроде этого:

router.navigateByUrl("/app"); 

или

router.navigate(['HomeComponent'], {relativeTo: route}); 
0

Это, вероятно, из-за к конфигурации сервера. Ваш сервер может перенаправляться на index.html для любого пути ошибки или пути после контекста.

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

Обеспечить более подробную информацию о коде сервера и сервера, используемого

+0

вы верны, на моем сервере web.config У меня есть <условия logicalGrouping =" MatchAll "> <тип действия = "Rewrite" URL = "/ приложение/index.html" /> Удаление этой линии и тестирование - теперь я 404 после того, как я обновить на HTTP:// localhost/app/test link – Mames

+0

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

+0

Для Apache tomcat: https://tomcat.apache.org/ tomcat-8.0-doc/rewrite.html –

0

решаемые - Мой самозагрузки отсутствовал некоторое содержание ... Я имел

bootstrap(AppComponent, [ 
    ROUTER_BINDINGS, 
    bind(APP_BASE_HREF).toValue(location.pathname), 
    bind(LocationStrategy).toClass(PathLocationStrategy) 
    ]); 

однако это было неправильно, вручную ввод:

bootstrap(AppComponent, [ 
    ROUTER_BINDINGS, 
    bind(APP_BASE_HREF).toValue("/"), 
    bind(LocationStrategy).toClass(PathLocationStrategy) 
    ]); 

Казалось, что нужно работать. Спасибо за вашу помощь!