Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript Angular 2在实例化子组件之前解析根组件_Typescript_Routes_Angular_Components_Resolve - Fatal编程技术网

Typescript Angular 2在实例化子组件之前解析根组件

Typescript Angular 2在实例化子组件之前解析根组件,typescript,routes,angular,components,resolve,Typescript,Routes,Angular,Components,Resolve,当我刷新我的web应用程序时,我希望它在实例化任何组件或路由之前请求潜在登录用户的数据。 如果找到了用户的数据,我希望将其注入到一个服务中,我的所有其他子组件都依赖于该服务 场景:假设我有3个组件,App(ROOT)、Home和About。 如果我将此代码放在About组件中,我希望它在实例化之前等待20秒,相反,该组件会立即实例化,只有当我离开该组件时,它才会触发函数,我等待20秒才能到达主页 routerOnActivate(next: ComponentInstruction, prev:

当我刷新我的web应用程序时,我希望它在实例化任何组件或路由之前请求潜在登录用户的数据。 如果找到了用户的数据,我希望将其注入到一个服务中,我的所有其他子组件都依赖于该服务

场景:假设我有3个组件,App(ROOT)、Home和About。 如果我将此代码放在About组件中,我希望它在实例化之前等待20秒,相反,该组件会立即实例化,只有当我离开该组件时,它才会触发函数,我等待20秒才能到达主页

routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction) {
    return new Promise((res, rej) => {
        setTimeout(function () {
            res(true);
        }, 20000)
    })
}

理想情况下,我不希望解析连接到任何路由,我希望在实例化任何路由之前在根组件中请求解析

实际上有两种方法

1) 您可以扩展
路由器出口
类,对于每个活动组件,您可以等待20秒并轻松处理单个用户数据(两者都可以在单个文件或单个位置处理)

2) 或者在单个组件中,您可以使用
@CanActivate
钩住并等待20秒,当组件被激活时,您可以将shareService(可能包含用户信息对象)注入构造函数并执行进一步的操作

为此,您可以在组件中使用
@CanActivate
,并等待20秒后再启动

如果我把这段代码放在About组件中,我希望它会等待 相反,在实例化前20秒,组件会 立即实例化


你找到解决办法了吗@死抱
@CanActivate((next: ComponentInstruction, previous: ComponentInstruction) => {
   return new Promise((res, rej) => {
        setTimeout(function () {
            res(true);
        }, 20000)
    })
})