Угловая маршрутизация меняется # от URL - PullRequest
0 голосов
/ 21 февраля 2019

Я работаю над обновлением проекта AngularJs до Angular 6. Ранее, чтобы открыть любую страницу, я использовал $ state:

$state.transitionTo(stateName, {}, {reload: true});

Теперь в Angular введена маршрутизация.Я внес все необходимые изменения, чтобы открыть страницу сведений о жизненной линии страницы по ссылке, добавленной на страницу жизненной линии.

Изменения:

app.main.ts

export const routes: Route[] = [
    {
        path: 'life-line-details',
        component: LifeLineDetailsComponent
    }
];

@NgModule({
    imports: [
        RouterModule,
        BrowserModule,
        UpgradeModule,.....      
        RouterModule.forRoot(routes)
    ]

life-line.html

<td><a routerLink="/#/life-line-details"(click)="detailLifeLine(lLine)">Details</a></td>

life-line.component.ts

 detailLifeLine = function (lLine) { 
        this.router.navigateByUrl("/#/life-line-details");
    }

Также у меня есть метод навигации.Но не сработает.

life-line-details.html - это отдельная страница, которую нужно открыть из вышеуказанных действий, и URL моего проекта должен измениться на: http://192.168.1.12:8080/#/life-line-details, но он изменится наhttp://192.168.1.12:8080/%23/life-line-details

Я попытался кодировать URI и encodeURIComponent для URL-адреса, передаваемого на routerLink и методе навигации.Но ничего не помогло, я не могу открыть страницу из-за% 23 вместо #.

Как мне решить проблему?

1 Ответ

0 голосов
/ 21 февраля 2019

В angular вы просто используете url как обычно (без хеш-запроса), если вы хотите, чтобы маршрутизатор использовал хеш-код перед URL-адресами, вам нужно использовать HashLocationStrategy .

Таким образом, вы должны изменить routerLink="/#/life-line-details" на routerLink="/life-line-details".

И вы можете настроить маршрутизатор следующим образом:

RouterModule.forRoot(routes, {
  useHash: true,
})
...