Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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
Angular 角度路由解算器只能毫不延迟地工作,存在可观察问题_Angular_Angular Router - Fatal编程技术网

Angular 角度路由解算器只能毫不延迟地工作,存在可观察问题

Angular 角度路由解算器只能毫不延迟地工作,存在可观察问题,angular,angular-router,Angular,Angular Router,当使用resolve:{key:ResolverService}解析组件的一些数据时,如果ResolverService立即返回一些数据(不使用observable或promise),组件将按预期在UI上加载。但是,如果解析器返回的是可观测值,那么即使可观测值得到下一个值,它也不工作 stackblitz示例: 在guard和resolver中返回observable的逻辑是相同的,但是由于某种原因,resolve似乎不起作用 已经检查过了,没什么帮助 对于给定场景的任何帮助,我们都表示感谢。

当使用
resolve:{key:ResolverService}
解析组件的一些数据时,如果
ResolverService
立即返回一些数据(不使用observable或promise),组件将按预期在UI上加载。但是,如果解析器返回的是可观测值,那么即使可观测值得到下一个值,它也不工作

stackblitz示例:

在guard和resolver中返回observable的逻辑是相同的,但是由于某种原因,resolve似乎不起作用

已经检查过了,没什么帮助


对于给定场景的任何帮助,我们都表示感谢。谢谢

解析程序返回的可观测必须完成。你的永远不会完成,所以导航永远不会发生

定义延迟观测值(将完成)的更简单方法是使用延迟管道:

return of('data from delayed').pipe(delay(1000));

检查更新的文件,我使用了observer.complete()。去做吧@是的,你当然可以。但它远没有我在回答中建议使用的那么优雅和简洁。我同意,但是
rxjs
imports把我的大脑搞乱了。其实很简单:所有东西(类型、工厂函数,比如observed,of)都是从“rxjs”导入的,除了操作符,(比如你放在管道中的所有东西(),比如delay)从“rxjs/operators”导入的。