Yoh*_*ake 5 angular2-routing angular
我正在开发一个Angular2应用程序,我陷入了路由配置.我拒绝了路由和导航的官方文档并适当地使用它们.它具有不适当的路由结构.
-Login Page
-Home Page
|-Achievement
|-Task
Run Code Online (Sandbox Code Playgroud)
我用auth guard来保护主页路由.在主页中有一个标题和链接,用于浏览子组件.目前,如果我点击一个链接,它加载整个主页与子组件,也给出了这个错误,
EXCEPTION: Uncaught (in promise): Error: Cannot find primary outlet to load 'AchievementComponent'
我检查了一切,看起来是正确的,但我无法弄清楚这是什么原因.
APP-routing.module.ts
..
@NgModule({
imports:[
RouterModule.forRoot([
{ path: 'login', component: LoginComponent },
{ path: 'home', component: HomeComponent, canActivate [LoggedInGuard],
children:[
{ path: 'achievement', component:AchievementComponent },
{ path: 'task', component:TaskComponent },
{ path: '', redirectTo:'achievement', pathMatch:'full' }
]
},
{ path: '', redirectTo:'home', pathMatch:'full' },
])
],
exports:[
RouterModule
]
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)
app.module.ts
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
AppRoutingModule,
AngularFireModule.initializeApp(firebaseConfig,firebaseAuthConfig),
],
declarations: [
AppComponent,
LoginComponent,
HomeComponent,
AchievementComponent,
TaskComponent,
],
providers: [
UserService,
DataService,
LoggedInGuard,
StorageService
],
bootstrap: [AppComponent],
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
app.component.html文件仅包含<router-outlet></router-outlet>标记.
home.component.html
<div *ngIf="validUser">
.......
<nav>
<a routerLink="achivement" >Achivement</a>
<a routerLink="task" >Task</a>
</nav>
<router-outlet></router-outlet>
</div>
Run Code Online (Sandbox Code Playgroud)
谁能给出解决方案呢?
此错误的原因是home.component.html文件中的*ngIf一部分.在开始变量是,验证后用户值更改为.validUserfalsevalidUsertrue
因此,在开始时没有路由器插座来加载子组件,在validUser更改值之后true并且如果单击其中一个链接,则根组件和子组件都被加载一次.
| 归档时间: |
|
| 查看次数: |
4320 次 |
| 最近记录: |