내가 index.html을의 라우터 콘센트에 응용 프로그램을로드하려고angular2 -에로드 응용 프로그램 라우터 - outet 즉 index.html을
<body><router-outlet><p>loading...</p></router-outlet></body>
된 index.html에 라우터 콘센트를 사용.
앱 routing.module.ts
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { HeaderComponent }from './home/welcome/header.component';
import { PageNotFoundComponent }from ./home/common/page_not_found.component';
const appRoutes: Routes = [
{
path : 'home',
component : HomeComponent,
children: [
{
path: 'welcome',
component: HeaderComponent,
outlet: 'home_content'
}
]
},
{ path: '', redirectTo: '/home/welcome', pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent }
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes)
],
exports: [RouterModule]
})
export class AppRoutingModule {}
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HomeComponent } from './home/home.component';
import { AppRoutingModule } from './app-routing.module';
import { HeaderComponent } from './home/welcome/header.component';
import { PageNotFoundComponent } from './home/common/page_not_found.component';
@NgModule({
imports: [ BrowserModule, FormsModule, AppRoutingModule ],
declarations: [ HomeComponent, HeaderComponent, PageNotFoundComponent ],
bootstrap: [ HomeComponent ]
})
export class AppModule { }
home.component.ts
import { Component } from '@angular/core';
@Component({
selector: '[router-outlet]',
templateUrl: './home.html'
})
export class HomeComponent { }
home.html을
<p>This is Home-HTML</p>
<router-outlet name="home_content"></router-outlet>
header.component.ts
import { Component } from '@angular/core';
@Component({
selector: '[router-outlet]',
templateUrl: './header_view.html',
})
export class HeaderComponent {
welcome_message = "Hello there...";
}
header_view.html
<p>This is Header_View-HTML</p>
페이지가 표시 "로드 ..."에서 메시지 index.html하지만 응용 프로그램을로드하지 않습니다. 브라우저 콘솔에서 다음 오류가 발생합니다. 당신이 (당신이 당신의 모듈에 부트 스트랩 할 구성 요소를) 응용 프로그램 구성 요소를 만들 수 있습니다 응용 프로그램 루트 "같은 선택기를 사용
HomeComponent_Host.html:1 ERROR Error: The selector "[router-outlet]" did not match any elements
at DefaultDomRenderer2.selectRootElement (dom_renderer.ts:234)
at DebugRenderer2.selectRootElement (services.ts:984)
at createElement (element.ts:199)
at createViewNodes (view.ts:307)
at createRootView (view.ts:225)
at callWithDebugContext (services.ts:815)
at Object.debugCreateRootView [as createRootView] (services.ts:140)
at ComponentFactory_.create (refs.ts:130)
at ComponentFactoryBoundToModule.create (component_factory_resolver.ts:112)
at ApplicationRef_.bootstrap (application_ref.ts:670)
은 내가 (예를 들어, 집보기) index.html을에서 한 번에 사용자가 로그인 후 라우터 콘센트에, 나는 완전히 다른 집보기 대신에 전체 HTML을 교체 할 필요가 화면을로드해야합니다 (대시 보드보기). 라우터 출력을 선택기로 사용하는 것은 잘못되었습니다. => 그렇다면 선택기를 제공하는 방법을 알려주십시오. 선택기 : component.ts에 selector : '[home_modules]'및 HTML 및 outlet에있는 router-outlet> : routing.module.ts의 'home_modules' 다른 화면을로드 할 수 없습니다. –
여러 구성 요소에 동일한 선택기 이름을 지정할 수는 없습니다. 그래서, 어떻게해야합니까?html의 셀렉터 : router-outlet> 및 셀렉터 : 'home_modules'같은 라우터 콘센트에로드 할 두 구성 요소가 제공되면 오류가 발생합니다. 요소 하나의 구성 요소 선택기가 주어진 요소와 일치 할 수 있는지 확인하십시오. " –
나는 대답을 업데이트했다. –