URL угловой нагрузки при использовании роутера - PullRequest
0 голосов
/ 26 апреля 2019

Я использую Angular 7 + роутер. Например, моя домашняя страница - localhost:4200, один из URL моего маршрутизатора - localhost:4200/route, и у меня есть конечная точка API на localhost:4200/api/foo.

Я пытаюсь позволить браузеру загрузить конечную точку API из обоих мест. Если я поставлю якорь с помощью href, указывающего на конечную точку API, обе ссылки будут работать отлично. Тем не менее, мне нужно сделать это программно, и я попробовал все следующие методы

window.open("localhost:4200/api/foo","_self")
window.location.replace('localhost:4200/api/foo');
window.location.href = 'localhost:4200/api/foo';

Они все работают на домашней странице, но если я нахожусь на странице роутера, это приведет меня к домашней странице.

Любая помощь очень ценится!

Если говорить точнее, у меня есть сервер весенней загрузки с шаблонами URL, такими как / api / *. Все остальные URL обрабатываются угловыми. Я хочу, чтобы браузер загрузил localhost:4200/api/foo, что напрямую обрабатывается запросом get, определенным на сервере

Демо-версия:

Моя навигационная панель является компонентом и остается неизменной независимо от маршрутизатора. Код для нажатия этой кнопки ниже. Обратите внимание, что в первый раз, когда я нажимаю на него под каким-то угловым перенаправленным URL, он загружает домашнюю страницу, а не google.com

onLogIn() {
    window.open('https://www.google.com',"_self");
}

Routing.ts file

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { IndexComponent } from "./index/index.component";
import { MicroserviceComponent } from "./microservice/microservice.component";

const routes: Routes = [
    { path: '', component: IndexComponent},
    { path: 'microservice/:id', component: MicroserviceComponent}
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

1 Ответ

1 голос
/ 26 апреля 2019

добавьте pathMatch к вашему пустому маршруту, этого не хватает, поэтому вы перенаправлены на домашний компонент

const routes: Routes = [
 { path: '', component: IndexComponent, pathMatch:'full'},
 { path: 'microservice/:id', component: MicroserviceComponent}
];
...