首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块加载后CanActivate和canLoad不工作

问模块加载后CanActivate和canLoad不工作
EN

Stack Overflow用户
提问于 2018-06-28 11:27:04
回答 2查看 3.1K关注 0票数 1

我有一个延迟加载模块的应用程序。一旦加载了模块,所有组件都会加载,所以我无法使用它来保护延迟加载模块的各个组件。是否有一种方法可以延迟加载模块,然后在加载模块后保护组件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-28 11:45:28

代码语言:javascript
复制
Have a look into the below code, Maybe it's useful for you.
This is my module routing example, which lazy loads.

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthGuard } from '../auth/auth-guard.service';
import { ModuleMainComponent } '...' // path
import { PathOneComponent } '...' // path


const demoRoutes: Routes = [
    {
        path: '',
        component: ModuleMainComponent,
        canActivate: [AuthGuard],
        children: [
            {
                path: '',
                canActivateChild: [AuthGuard],
                children: [
                    {
                        path: 'path1', component:PathOneComponent,
                        canActivate: [AuthGuard]
                    }
                ]

            }
        ]
     }
]

@NgModule({
    imports: [
        RouterModule.forChild(demoRoutes)
    ],
    exports: [
        RouterModule
    ]
})
export class DemoRoutingModule { }

app.routes.ts

代码语言:javascript
复制
{
        path: 'demo',
        loadChildren: '....', // path of module
        canActivate: [AuthGuard]
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-28 11:50:17

这是在延迟加载中遵循的基本步骤,在角度上使用angular。

在app-routing.module.ts

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

/* Import child modules start */
import { Module1 } from './module1.module';
import { Module2 } from './module2.module';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';

const routes: Routes = [

    { path: '', redirectTo: 'module1', pathMatch: 'full' },

    { path: 'module1', loadChildren: () => Module1 },

    { path: 'module2', loadChildren: () => Module2 },

    { path: '**', redirectTo: '404'},
    { path: '404', component: PageNotFoundComponent}

];

@NgModule({
    imports: [RouterModule.forRoot(routes)],
    exports: [RouterModule]
})
export class AppRoutingModule { }

单元1-路.模组:

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AuthGuard } from './../../core/guard/auth.guard';
import { AuthModule } from './auth/auth.module';
import { HomeLayoutComponent } from './../../layouts/home-layout/home-layout.component';
import { DashboardComponent } from './dashboard/dashboard.component';

const routes: Routes = [

    {
        path: 'module1, component: HomeComponent, canActivate: [AuthGuard]
children: [
            { path: '', 'dashboard', pathMatch: 'full' },
            { path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
            { path: 'myapps', component: MyApplicationsComponent, canActivate: [AuthGuard] },

    {
        path: 'module1authmodule',loadChildren: () => AuthModule
    }

];

@NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule]
})
export class Module1RoutingModule { }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51081761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档