站長資訊網
        最全最豐富的資訊網站

        談談Angular模塊的使用以及懶加載

        談談Angular模塊的使用以及懶加載

        相關教程推薦:angularjs(視頻教程)

        一、Angular 內置模塊

        談談Angular模塊的使用以及懶加載

        二、Angular 自定義模塊

        當我們項目比較小的時候可以不用自定義模塊。但是當我們項目非常龐大的時候把所有的組 件都掛載到根模塊里面不是特別合適。所以這個時候我們就可以自定義模塊來組織我們的項 目。并且通過 Angular 自定義模塊可以實現路由的懶加載。

        ng g module mymodule

        談談Angular模塊的使用以及懶加載

        新建一個 user 模塊

        ng g module module/user

        新建一個 user 模塊下的根組件

        ng g component module/user

        新建一個 user 模塊下的 address,order,profile 組件

        ng g component module/user/components/address ng g component module/user/components/order ng g component module/user/components/profile

        如何在根模塊掛載 user 模塊呢?

        在 app 根組件的模板文件 app.component.html 里 引用 user 組件會報錯
        需要如下處理才可以被訪問

        1. 在 app.module.ts 引入模塊

        談談Angular模塊的使用以及懶加載

        1. user 模塊暴露出 要被外界訪問到的組件
          談談Angular模塊的使用以及懶加載

        2. 在根模板 app.component.html 里引入

        <app-user></app-user>

        如果需要在根組件里直接 使用 app-address 組件,也是需要先在 user 模塊 user.module.ts 暴露

        /暴露組件 讓其他模塊里面可以使用暴露的組件/
        exports:[UserComponent,AddressComponent]

        如何在根模塊掛載 product 模塊呢?

        同上

        創建 user 模塊下的服務

        1. 創建
          ng g service module/user/services/common

        2. 在 user 模塊引入服務
          user.module.ts

        談談Angular模塊的使用以及懶加載

        配置路由實現模 塊懶加載

        談談Angular模塊的使用以及懶加載

        創建模塊:

        ng g module module/user --routing ng g module module/article --routing ng g module module/product --routing

        創建組件:

        ng g component module/user ng g component module/user/components/profile ng g component module/user/components/order ng g component module/article ng g component module/article/components/articlelist ng g component module/article/components/info ng g component module/product ng g component module/product/components/plist ng g component module/product/components/pinfo

        這里先以article為例講解:

        angular配置懶加載

        在angular中路由即能加載組件又能加載模塊,而我們說的懶加載實際上就是加載模塊,目前還沒有看到懶加載組件的例子。
        加載組件使用的是component關鍵字
        加載模塊則是使用loadChildren關鍵字

        1. 在app文件夾下 新建 app-routing.module.ts

        內容如下:

        import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; @NgModule({   imports: [RouterModule.forRoot(routes)],   exports: [RouterModule] }) export class AppRoutingModule { }

        forRoot是用在根模塊加載路由配置,
        而forChild是用在子模塊加載路由配置。

        注意:需要在根模板 app.module.ts里導入AppRoutingModule模塊

        import { AppRoutingModule } from './app-routing.module'; ... imports: [     AppRoutingModule, ]

        2. 在子模塊里配置路由

        在modulearticlearticle-routing.module.ts里配置路由

            import { NgModule } from '@angular/core';     import { Routes, RouterModule } from '@angular/router';      // import {ArticleComponent} from './article.component';     const routes: Routes = [     // {     //     path:'',     //     component:ArticleComponent     // }     ];      @NgModule({     imports: [RouterModule.forChild(routes)],     exports: [RouterModule]     })     export class ArticleRoutingModule { }

        也可以在新建項目的時候 就把路由的模塊加上,可以省去上面的 配置

        在 article模塊的 article-routing.module.ts配置路由

        .....  import {ArticleComponent} from './article.component'; const routes: Routes = [   {     path:'',     component:ArticleComponent   } ];  ......

        3. 在app的路由模塊進行配置路由

        const routes: Routes = [   {     path:'article',     //寫法一:     loadChildren:'./module/article/article.module#ArticleModule'      //寫法二     // loadChildren: () => import('./module/user/user.module').then( m => m.UserModule)     },   // {   //   path:'user',loadChildren:'./module/user/user.module#UserModule'   // },   // {   //   path:'product',loadChildren:'./module/product/product.module#ProductModule'   // },   {     path:'**',redirectTo:'article'   } ];

        如果在之前新建模塊的時候沒有加上–routing,,需要配置模塊的路由

        product模塊
        product的路由:moduleproductproduct-routing.module.ts

        import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router';  import {ProductComponent} from './product.component'; const routes: Routes = [   {     path:'',     component:ProductComponent   } ];  @NgModule({   imports: [RouterModule.forChild(routes)],   exports: [RouterModule] }) export class ProductRoutingModule { }

        product的模塊:
        moduleproductproduct.module.ts

        import { ProductRoutingModule } from './product-routing.module';  imports: [     ProductRoutingModule   ],

        user模塊
        user的路由: moduleuseruser-routing.module.ts

        import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router';  import {UserComponent} from './user.component'; const routes: Routes = [   {     path:'',     component:UserComponent   } ];  @NgModule({   imports: [RouterModule.forChild(routes)],   exports: [RouterModule] }) export class UserRoutingModule { }

        user的模塊: moduleuseruser.module.ts

        import {UserRoutingModule} from './user-routing.module';  +   imports: [     UserRoutingModule   +   ],

        RouterModule.forRoot() 和 RouterModule.forChild()

        RouterModule對象為提供了兩個靜態的方法:forRoot()和forChild()來配置路由信息。

        RouterModule.forRoot()方法用于在主模塊中定義主要的路由信息,RouterModule.forChild()與 Router.forRoot()方法類似,但它只能應用在特性模塊中。

        即根模塊中使用forRoot(),子模塊中使用forChild()。

        配置子路由

        1. 在商品模塊的路由product-routing.module.ts 配置子路由
        import { PlistComponent } from './components/plist/plist.component'; import { CartComponent } from './components/cart/cart.component'; import { PinfoComponent } from './components/pinfo/pinfo.component';  const routes: Routes = [   {     path:'',     component:ProductComponent,     children:[       {path:'cart',component:CartComponent},       {path:'pcontent',component:PinfoComponent}     ]   },   {path:'plist',component:PlistComponent} ];
        1. 在商品模塊的模板product.component.html 添加router-outlet
        <router-outlet></router-outlet>
        1. 在頁面app.component.html添加菜單,方便跳轉
        <a [routerLink]="['/product']">商品模塊</a> <a [routerLink]="['/product/plist']">商品列表</a>

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 欧美精品一区二区三区免费| 亚洲一级Av无码毛片久久精品| 午夜一级日韩精品制服诱惑我们这边 | 久久99精品久久久久久久久久 | 人妻少妇精品视频一区二区三区 | 2024国产精品极品色在线| 白浆都出来了视频国产精品| 日本内射精品一区二区视频 | 精品无码国产污污污免费网站国产 | 国产午夜精品一区二区三区小说| 亚洲午夜精品一区二区| 亚洲精品色午夜无码专区日韩| 精品久久久久久国产潘金莲| 亚洲人成亚洲精品| 99久久久精品免费观看国产| 亚洲精品一级无码鲁丝片| 国产欧美精品AAAAAA片| 亚洲?V乱码久久精品蜜桃| 99久久免费国产精品| 国产成人A人亚洲精品无码| 欧美精品一区二区三区视频| 精品国产sm捆绑最大网免费站| 97精品国产高清自在线看超| 国产AV无码专区亚洲精品| 亚洲国产精品嫩草影院在线观看 | 国内精品欧美久久精品| 国产成人精品久久一区二区三区| 黄床大片免费30分钟国产精品 | 青草国产精品视频。| 亚洲人成亚洲精品| 午夜精品久久久久9999高清| 国产精品成人免费观看| 久久99精品久久久久久hb无码| 国产精品欧美久久久久天天影视| 色久综合网精品一区二区| 国产精品女人呻吟在线观看| 91精品国产91久久久久久青草 | 狠狠精品干练久久久无码中文字幕| 精品国产一区AV天美传媒| 国产精品成人小电影在线观看| 久久精品一本到99热免费|