RestoredState с помощью кнопки «Назад» - ноль, если маршруты динамические - PullRequest
0 голосов
/ 24 марта 2020

У меня есть приложение angular (8 версия) с этим RouterModule:

    export const routes: Routes = [
    {
        path: "",
        component: MainComponent,
        children: [
            { path: "", redirectTo: "home", pathMatch: "full" },
            {
                path: "home",
                component: HomeComponent,
                canActivate: [MyGuard],
                runGuardsAndResolvers: "always"
            },
            {
                path: "myindex",
                component: MyIndexComponent,
            },
            {
                path: "mypageone",
                component: MyPageOneComponent,
                canActivate: [NewGuard],
            },
            {
                path: "mypagetwo",
                component: MyPageTwoComponent,
                canActivate: [NewGuard],
            },
            {
                path: "page/:id",
                component: DynamicPageComponent,
                canActivate: [NewGuard],
                runGuardsAndResolvers: "always",
            },
            {
                path: "page/:id/:version",
                component: DynamicPageComponent,
                canActivate: [NewGuard],
                runGuardsAndResolvers: "always",
            },
            {
                path: "not-found",
                component: PageNotFoundComponent,
            },
            {
                path: "unauthorized",
                component: UnauthorizedComponent,
            },
            { path: "**", redirectTo: "not-found" },
        ],
    },
];

@NgModule({
    imports: [
        RouterModule.forRoot(routes, {
            onSameUrlNavigation: "reload",
        }),
    ],
    exports: [RouterModule],
    providers: [NewGuard, MyGuard],
})
export class AppRoutingModule { }

Когда я перемещаюсь с mypageone на mypagetwo с помощью кнопки «Назад», NavigationEvent представляет собой NavigationStartEvent с trigger = "popstate" и restoreState не равно NULL (например, restoreState: {navigationId: 2}), с правильным идентификатором navigationId предыдущей страницы.

Когда я перемещаюсь между динамическими c маршрутами (например, из "page / 1111-1111- 1111/2 «на предыдущий маршрут» (страница 2222-2222-2222 / 4 ») с помощью кнопки« Назад »NavigationEvent представляет собой NavigationStartEvent с trigger =" popstate "и restoreState null. Браузер корректно переходит на предыдущую страницу, но restoreState имеет значение null (устанавливает ли браузер совершенно новое состояние при использовании динамического маршрута c?). Но мне нужно, чтобы restoreState не был нулевым, потому что мне нужен навигационный идентификатор восстановленного состояния.

Есть ли способ добиться того же поведения для маршрутов stati c и dynamici c (с восстановленным состоянием нет значение NULL)? Может, я где-то допустил ошибки?

Я использую Angular v 8.2.14 и последнюю версию Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...