Angular2 路由問題修復 、求解


Angular2 提供了比angular1 更為強大的路由功能,但是在具體使用路由過程中,可是出現了很多路由不按照預想的方式執行的問題。為了說明今天的問題,我特地新建了一個測試工程。歡迎交流。

首先介紹一下測試代碼的組織結構,

 

 

其中包含兩個組件:button、accordion。這個例子采用的是ng2-bootstrap.

我展示一下路由配置:

 1 /**
 2  * Created by guozhiqi on 2017/2/24.
 3  */
 4 import {Route,Routes}from '@angular/router';
 5 import {AppComponent}from './app.component';
 6 import {LayoutComponent}from './layout/layout.component';
 7 
 8 export const routes:Routes=[
 9   {
10     path:'',
11     redirectTo:'button',
12     pathMatch:'full'
13   },
14   {
15     path:'',
16     component:LayoutComponent,
17     children:[
18       {
19         path:'button',
20         loadChildren:'./Button/Button-guo.module#ButtonGuoModule'
21       },
22       {
23         path:'accordion',
24         loadChildren:'./accordionguo/accordion-guo.module#AccordionGuoModule'
25       }
26     ]
27   },
28   {
29     path:'**',
30     redirectTo:'button',
31   }
32 ];

 

這段路由中我定義了默認路由,會跳轉到button,但是我采用最新的angular-cli,並沒有進行跳轉,並且默認路由並沒有使用layoutcomponent組件,這是最大的問題,因為layoutcomponent組件是整個頁面的樣式文件。

目前的結果什么呢?

我展示一下appmodule.ts代碼:

 1 import { BrowserModule } from '@angular/platform-browser';
 2 import { NgModule } from '@angular/core';
 3 import { FormsModule } from '@angular/forms';
 4 import { HttpModule } from '@angular/http';
 5 import {ButtonGuoModule}from './button/button-guo.module';
 6 import { AppComponent } from './app.component';
 7 import {ButtonsModule}from 'ng2-bootstrap/buttons';
 8 import {routes}from './app.routing';
 9 import {RouterModule}from '@angular/router';
10 import {CommonModule}from '@angular/common';
11 import {AccordionGuoModule}from './accordionGuo/accordion-guo.module';
12 import {LayoutComponent}from './layout/layout.component';
13 @NgModule({
14   declarations: [
15     AppComponent,LayoutComponent
16   ],
17   imports: [RouterModule.forRoot(routes),AccordionGuoModule,
18     BrowserModule,RouterModule,CommonModule,
19     FormsModule,ButtonGuoModule,
20     HttpModule
21   ],
22   providers: [],
23   bootstrap: [AppComponent]
24 })
25 export class AppModule { }

 

請注意appmodule.ts中我標紅的引入module,如果我將accordionmodule放在buttonmodule前面,那么顯示的就是accordionmodule的內容,反之顯示的就是buttonmodule的內容。

執行結果:

1.accordionmodule在buttonmodule前面

2.buttonmodule在accordionmodule前面

 

請注意,更改了順序以后,務必重新編譯,重新執行 ng serve命令。

會什么會出現這個問題?歡迎大家交流。下篇我會專門解釋這個問題的答案

 為了便於再現,如果有需要源代碼的可以聯系我QQ:474351703,博客園沒辦法直接上傳


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM