angular 4+ routerlink 在不同的 router-outlet 加载组件
angular 4+ routerlink loads component in different router-outlet
我刚刚开始学习 Angular 中的路由,并且正在尝试制作一个简单的应用程序,该应用程序显示一个主页,其中包含指向仪表板和联系页面的链接。
app.component.ts
import {Component} from '@angular/core'
@Component({
selector: 'my-app',
template: `
<router-outlet></router-outlet>
`,
})
export class AppComponent {
constructor() { }
}
app.module.ts
import {NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {RouterModule} from '@angular/router'
import { AppComponent } from './app.component'
import {Home} from './home.component'
import {Dashboard} from './dashboard.component'
import {Contact} from './contact.component'
@NgModule({
imports: [ BrowserModule,
RouterModule.forRoot([
{path: 'home', component: Home},
{path: 'dashboard', component: Dashboard},
{path: 'contact', component: Contact},
{path: '', redirectTo: '/home', pathMatch: 'full'}
])],
declarations: [ AppComponent, Home, Dashboard, Contact ],
bootstrap: [ AppComponent ]
})
export class AppModule {}
home.component.ts
import {Component} from '@angular/core'
@Component({
template: `
<h2>Home</h2>
<nav>
<a routerLink="/dashboard">Dashboard</a>
<a routerLink="/contact">Contact</a>
</nav>
<router-outlet></router-outlet>
`,
})
export class Home {
constructor() { }
}
仪表板和联系人页面应显示在导航栏下方,其中定义了 Home 组件的路由器出口。但相反,我认为它们正在加载到 app.component.html 中定义的路由器插座中。为什么 Dashboard/Contact 组件的内容没有加载到导航栏下方?
我尝试搜索其他问题,但找不到与此问题相关的答案。
我想你真正想做的是下面这样的事情。
对于app.component:
import {Component} from '@angular/core'
@Component({
selector: 'my-app',
template: `
<nav>
<a routerLink="/home">Home</a>
<a routerLink="/dashboard">Dashboard</a>
<a routerLink="/contact">Contact</a>
</nav>
<router-outlet></router-outlet>
`,
})
export class AppComponent {
}
对于home.component:
import {Component} from '@angular/core'
@Component({
template: `
<h2>Home</h2>
`,
})
export class Home {
constructor() { }
}
其他都一样。我所做的只是将导航移动到 app.component,在导航中添加一个家 link,并从 home.component 中移除第二个路由器插座。试试看。
我刚刚开始学习 Angular 中的路由,并且正在尝试制作一个简单的应用程序,该应用程序显示一个主页,其中包含指向仪表板和联系页面的链接。
app.component.ts
import {Component} from '@angular/core'
@Component({
selector: 'my-app',
template: `
<router-outlet></router-outlet>
`,
})
export class AppComponent {
constructor() { }
}
app.module.ts
import {NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {RouterModule} from '@angular/router'
import { AppComponent } from './app.component'
import {Home} from './home.component'
import {Dashboard} from './dashboard.component'
import {Contact} from './contact.component'
@NgModule({
imports: [ BrowserModule,
RouterModule.forRoot([
{path: 'home', component: Home},
{path: 'dashboard', component: Dashboard},
{path: 'contact', component: Contact},
{path: '', redirectTo: '/home', pathMatch: 'full'}
])],
declarations: [ AppComponent, Home, Dashboard, Contact ],
bootstrap: [ AppComponent ]
})
export class AppModule {}
home.component.ts
import {Component} from '@angular/core'
@Component({
template: `
<h2>Home</h2>
<nav>
<a routerLink="/dashboard">Dashboard</a>
<a routerLink="/contact">Contact</a>
</nav>
<router-outlet></router-outlet>
`,
})
export class Home {
constructor() { }
}
仪表板和联系人页面应显示在导航栏下方,其中定义了 Home 组件的路由器出口。但相反,我认为它们正在加载到 app.component.html 中定义的路由器插座中。为什么 Dashboard/Contact 组件的内容没有加载到导航栏下方?
我尝试搜索其他问题,但找不到与此问题相关的答案。
我想你真正想做的是下面这样的事情。
对于app.component:
import {Component} from '@angular/core'
@Component({
selector: 'my-app',
template: `
<nav>
<a routerLink="/home">Home</a>
<a routerLink="/dashboard">Dashboard</a>
<a routerLink="/contact">Contact</a>
</nav>
<router-outlet></router-outlet>
`,
})
export class AppComponent {
}
对于home.component:
import {Component} from '@angular/core'
@Component({
template: `
<h2>Home</h2>
`,
})
export class Home {
constructor() { }
}
其他都一样。我所做的只是将导航移动到 app.component,在导航中添加一个家 link,并从 home.component 中移除第二个路由器插座。试试看。