Невозможно сопоставить маршруты
Появляется мой компонент, но при загрузке страницы появляется сообщение об ошибке. Кажется, я не могу решить сообщение об ошибке, посмотрев на кучу ресурсов.
Ошибка
EXCEPTION: Error: Uncaught (in promise): Cannot match any routes. Current segment: 'index.html'. Available routes: ['/login'].
main.component.ts находится в index.html, и как только страница загружается, отображается указанное выше сообщение об ошибке.
import { Component } from '@angular/core';
import { Routes, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from '@angular/router';
import { LoginComponent } from './login/login.component';
@Component({
selector: 'main-component',
template:
' <header>
<h1>Budget Calculator</h1>
<a id='login' [routerLink]="['/login']">Login</a>
<router-outlet></router-outlet>
</header> '
directives: [ROUTER_DIRECTIVES],
providers: [ROUTER_PROVIDERS]
})
@Routes([
{path: '/login', component: LoginComponent}
])
export class MainComponent {}
login.component.ts направляется через main.component.ts и показывает, когда я нажимаю ссылку, несмотря на сообщение об ошибке. Прямо сейчас у меня есть стиль, чтобы всплывать над другими элементами в main.component, но хотелось бы, чтобы это был единственный компонент, который отображается на странице. В основном замените main.component в index.html на login.component, если это возможно, вместо того, чтобы делать целую кучу стилей для отображения: none.
import { Component } from '@angular/core';
@Component({
selector: 'login',
template:
' <div id="login-pop-up">
<h6 class="header_title">Login</h6>
<div class="login-body">
Some fancy login stuff goes here
</div>
</div> '
})
export class LoginComponent {}
Ответы
Ответ 1
Также убедитесь, что в начале тега <head>
есть тег <base href="/">
или предоставлен boostrap(...)
, как описано в Angular 2 маршрутизатора без базовой настройки href
Совет. Маршрутизатор @angular/router
также устарел как @angular/router-deprecated
, и новый маршрутизатор будет отправлен снова: -/Если вы собираетесь переключиться на @angular/router
, вероятно, лучше отложить пока не появится новый и, надеюсь, окончательный маршрутизатор.
Ответ 2
plz убедитесь, что тег <base href="/">
в вашем теге головы, и вы можете использовать useAsDefault: true
attr следующим образом:
@Routes([
{path: '/login', component: LoginComponent,useAsDefault: true}
])
Ответ 3
Когда у меня возникла эта проблема, я обычно добавляю
<base href="./">
в <head> <base href="./"> </head>
файла html.
Затем при импорте любых файлов в NG2
import { Auth } from './auth.service';
Это предпочтительный способ сделать базу в документации,
![введите описание изображения здесь]()
Ответ 4
если у вас есть дочерний компонент, и вы хотите использовать его таким образом
маршрутизатор
const routes: Routes = [
{
path: '',
component: LoginComponent
},
{
path: 'home',
component: HomeComponent,
children: [
{
path: 'enter',
component: EnterDetailsComponent,
},
{
path: 'find',
component: FindDetailsComponent,
}
]
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
использовать навигацию ([]) метод таким образом
конструктор компонентов
вот как это._router приходит
constructor( private _router: Router) {}
this._router.navigate(['/home/find']);
Ответ 5
просто добавьте маршрут для "исключения".
{
path: '',
component: HomeComponent
}