2016-08-17 3 views
0

Я разработал простую программу с угловым 2 RC5. Все, что он делает, отображает страницу поиска и позволяет вам щелкнуть запись, чтобы отредактировать ее. Простые вещи. Я создал приложение, используя последнюю версию Angular CLI из своей главной ветви. Поскольку эта версия не поддерживает маршрутизацию, мне пришлось создать свою собственную, используя router guide.Ошибка: не может соответствовать любым маршрутам: '' в угловом 2 RC5 с угловым CLI

К сожалению, при загрузке начальной страницы в моей консоли появляется следующая ошибка.

Error: Cannot match any routes: ''' 

Вот что мой app.routes.ts файл выглядит следующим образом:

import { Routes, RouterModule } from '@angular/router'; 
import { SearchComponent } from "./search/index"; 
import { EditComponent } from "./edit/index"; 
import { AppComponent } from "./app.component"; 

const appRoutes: Routes = [ 
    { path: 'search', component: SearchComponent }, 
    { path: 'edit/:id', component: EditComponent } 
]; 

export const appRoutingProviders: any[] = []; 

export const routing = RouterModule.forRoot(appRoutes); 

Это то ссылка в app.module.ts следующим образом:

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms' 
import { HttpModule } from '@angular/http' 
import { routing, appRoutingProviders } from './app.routing'; 

import { AppComponent } from './app.component'; 
import { SearchComponent } from './search/search.component'; 
import { EditComponent } from './edit/edit.component'; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    SearchComponent, 
    EditComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    routing 
    ], 
    providers: [appRoutingProviders], 
    entryComponents: [AppComponent], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

Я пытался добавить путь '' в app.routing.ts, но это заставляет мою страницу отображать AppComponent дважды:

const appRoutes: Routes = [ 
    { path: 'search', component: SearchComponent }, 
    { path: 'edit/:id', component: EditComponent }, 
    { path: '', component: AppComponent } 
]; 

В index.html, есть HTML загрузить AppComponent:

<app-root>Loading...</app-root> 

И в app.component.html, у меня есть маршрутизатор-выход для загрузки страниц.

<!-- Routed views go here --> 
<router-outlet></router-outlet> 
+1

Он загружается в два раза, потому что AppComponent является "bootstraped" в файле main.ts. В вашем приложении это нормально, если вы ищетеComponent быть пустым? {путь: '', компонент: SearchComponent} –

+0

Угловая показывает вам эту ошибку, потому что на самом деле у вас нет пути основного маршрута. Какой компонент вы хотите видеть при загрузке страницы? Поиск? Если это так, вам нужно добавить эту строку {path: '', redirectTo: 'search', pathMatch: 'full'} –

+0

Felipe: Если я использую пустой путь для 'SearchComponent', он работает, но все мои ссылки на поисковый маршрут не работает. Полагаю, я мог бы их обновить, но это кажется неправильным. Камиль: Я хочу видеть «AppComponent», как я сделал с Angular 2 RC1. У меня есть 'Search' в app.component.html, чтобы перейти к компоненту поиска. –

ответ

0

Определите ваши маршруты, как это:

const appRoutes: Routes = [ 
    { path: 'search', component: SearchComponent }, 
    { path: 'edit/:id', component: EditComponent }, 
    { path: '', redirectTo: '/search', pathMatch: 'full' } 
]; 

Пожалуйста, обратитесь к официальной документации: https://angular.io/docs/ts/latest/guide/router.html

Есть несколько кодовых фрагментов и plunkers.

+0

Это избавляет от ошибки, но теперь я застреваю загрузку SearchComponent по умолчанию. Нельзя ли просто загрузить AppComponent без каких-либо других? –

+0

Нет, если theres router-outlet в вашем компоненте, Angular хочет сделать что-то или вы получите эту ошибку. Возможно, вы можете поместить это вещество из своего AppComponent в другой компонент, и это «путь по умолчанию»! как правило, AppComponent - это только запись в ваше приложение и все маршруты ... так что навигация и маршрутизатор - это возможно нижний колонтитул .. все остальное вставляется в другие компоненты. – mxii

0

Добавить желтую область в app.module.ts Его работа для меня! Надеюсь это работает!

0

Маршруты:

const routes: Routes = [ 
    { path: '', component: HeaderComponent }, 
    { path: 'dashboard', component: DashboardComponent }, 
    { path: 'detail/:id', component: HeroDetailComponent }, 
    { path: 'heroes',  component: HeroesComponent } 
]; 

App компонент должен иметь только:

<router-outlet></router-outlet> 
Смежные вопросы