гибридное приложение Angular 2: URL возвращается после навигации - PullRequest
0 голосов
/ 26 октября 2018

При каждом изменении маршрута отображается правильный компонент, но есть проблема с путем.
Например, переход от / items к / add-item изменяет и URL на секунду, но затем возвращает его назад.
Это происходит на каждой странице независимо от того, с чего начать и куда идти.

Навигация

<a routerLink="/add-item">Add item</a>

Main app.routes.ts

export const appRoutes: Routes = [{
    path: 'brokers',
    pathMatch: 'full',
    redirectTo: '/'
},
{
    path: 'sellers',
    pathMatch: 'full',
    redirectTo: '/'
},
{
    path: 'buyers',
    pathMatch: 'full',
    redirectTo: '/'
},
{
    data: { name: 'pageNotFound' },
    path: '**',
    redirectTo: '/404'
}];

home.routes.ts

export const homeRoutes: Routes = [{
    component: HomePageComponent,
    data: { name: 'homePage' },
    path: ''
}

страница-не-found.routes.ts

export const pageNotFoundRoutes: Routes = [{
    component: PageNotFoundComponent,
    data: { name: 'pageNotFound' },
    path: '404'
}]

адд-item.routes.ts

export const addItemRoutes: Routes = [{
    component: AddItemComponent,
    data: { name: 'addItem' },
    path: 'add-item'
}]

items.routes.ts

export const itemsRoutes: Routes = [{
    component: ItemsComponent,
    data: { name: 'items' },
    path: 'items'
}];

Маршруты всех модулей объявляются в разделе импорта следующим образом

RouterModule.forChild(addItemRoutes)

Основные маршруты

RouterModule.forRoot(appRoutes, { enableTracing: true })

Трассировка маршрутизатора не дает мне ошибок и исправляет urlAfterRedirects в событии NavigationEnd.

1 Ответ

0 голосов
/ 04 ноября 2018

Просто всем, кто столкнется с той же проблемой.
Если у вас есть гибридное приложение AngularJS to Angular, вы должны сохранить старые настройки $ locationProvider, например $locationProvider.html5Mode({ enabled: true, requireBase: false });
В противном случае ваша новая угловая маршрутизация встретит эту проблему.

Или вы можете отключить манипуляцию с маршрутом Angular.js таким взломом

$provide.decorator('$browser', ['$delegate', ($delegate) => {

    $delegate.onUrlChange = () => {};
    $delegate.url = () => {

        return '';

    };

    return $delegate;

}]);
...