【发布时间】:2019-09-19 23:14:11
【问题描述】:
我需要有条件地加载路由路径。我在下面尝试过。但它给出了这个错误。你能告诉我怎么做这种任务吗?
[ng] 错误无法读取未定义 [ng] i 的属性“loadChildren” 「wdm」:编译失败。
还有:
app-routing.module.ts:21 未捕获类型错误:无法读取属性 未定义的“getLandingPage” 在 Module../src/app/app-routing.module.ts (app-routing.module.ts:21) 在 webpack_require (bootstrap:83) 在模块../src/app/app.module.ts (app.component.ts:21) 在 webpack_require (bootstrap:83) 在模块../src/main.ts (main.ts:1) 在 webpack_require (bootstrap:83) 在 Object.0 (main.ts:13) 在 webpack_require (bootstrap:83) 在 checkDeferredModules (bootstrap:45) 在 Array.webpackJsonpCallback [as push] (bootstrap:32)
app.routing.module.ts
const routes: Routes = [
{
path: "",
redirectTo: this.getLandingPage(), // here is the issue
pathMatch: "full",
},
{
path: "tabs",
loadChildren: "./pages/tabs/tabs.module#TabsPageModule",
},
{
path: 'landing',
loadChildren: './pages/landing/landing.module#LandingPageModule'
},
];
export class AppRoutingModule {
getLandingPage(): string {
let url = "";
switch (environment.hotelName) {
case "h1":
url = "tabs";
break;
case "h2":
url = "landing";
break;
default:
}
return url;
}
}
我有auth.gurad.ts,如下所示。我不认为我可以在哪里使用它。
export class AuthGuard implements CanActivate {
constructor(private router: Router,
private user: UserService,
private localStorageService: LocalStorageService) { }
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
return new Promise(async resolve => {
const userInfo: UserInfo = await this.localStorageService.get(LocalStorage.USER_INFO);
if (userInfo && (moment() < moment(userInfo.expireDate))) {
this.user.guest = false;
return resolve(true);
}
this.user.guest = true;
this.router.navigate(["/sign-in"]);
return resolve(false);
});
}
}
【问题讨论】:
-
标签/登陆的定义在哪里?
-
@jcuypers 已更新。请看。
-
您需要在 getLandingpage 中的 url 添加 / 前缀
-
您也可以复制并粘贴“/pages/”的定义吗?你能确认目标是延迟加载吗?
-
@jcuypers 是的,这是延迟加载页面。
标签: angular typescript angular7 ionic4