2016-08-17 2 views
0

저는 Angular 2 RC5로 간단한 응용 프로그램을 개발했습니다. 검색 페이지를 렌더링하고 레코드를 클릭하여 편집 할 수 있습니다. 간단한 물건. 나는 master 브랜치의 Angular CLI 최신 버전을 사용하여 앱을 생성했다. 이 버전은 라우팅을 지원하지 않으므로 router guide을 사용하여 내 버전을 만들어야했습니다.오류 : 모든 경로를 일치시킬 수 없음 : Angular 2 RC5 in Angular CLI

초기 페이지가로드 될 때 콘솔에 다음 오류가 표시됩니다. 다음과 같이 다음 app.module.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); 

:

Error: Cannot match any routes: ''' 

여기처럼 내 app.routes.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을 두 번 렌더링합니다.

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

은, HTML은 AppComponent를로드 할 수있다 :

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

그리고 app.component.html에서

, 나는 페이지를로드하는 라우터 콘센트가 있습니다.

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

이 AppComponent이 main.ts 파일에서 "bootstraped"이 때문에 두 번로드되고있다. 앱에서 searchComponent가 비어 있으면 괜찮습니까? {경로 : '', 구성 요소 : SearchComponent} –

+0

Angular는 실제 경로 경로가 없기 때문에이 오류를 표시합니다. 페이지로드시 어떤 구성 요소를보고 싶습니까? 수색? 그렇다면이 줄을 추가해야합니다. {경로 : '', redirectTo : '검색', pathMatch : '전체'} –

+0

펠리페 :'SearchComponent'에 빈 경로를 사용하면 작동하지만, 검색 경로가 실패합니다. 나는 그들을 업데이트 할 수 있다고 생각하지만 잘못된 것 같습니다. Kamil : Angular 2 RC1에서했던 것처럼 AppComponent를보고 싶습니다. app.component.html에 'Search'이있어 검색 구성 요소에 연결됩니다. –

답변

0

이 같이 당신의 경로를 정의합니다 https://angular.io/docs/ts/latest/guide/router.html

여러 코드 조각 및 plunkers 있습니다

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

은 공식 문서를 참조하십시오.

+0

이것은 오류를 제거하지만, 이제 SearchComponent를 기본값으로로드하지 못했습니다. AppComponent를 w/o로로드 할 수 있습니까? –

+0

아니요, 구성 요소의 라우터 - 콘센트에 Angular가 무언가를 렌더링하려고하거나 오류가 발생하면 문제가 발생합니다. 어쩌면 당신은 AppComponent에서 다른 컴포넌트로 그 물건을 넣을 수 있고 '기본 경로'를 thats! 일반적으로 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 } 
]; 

응용 프로그램 구성 요소 만이 있어야이 :

<router-outlet></router-outlet>