Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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 角度2-当我让路由器导航时,解析器在当前页面上的OnDestroy之前做出反应_Angular_Components_Router_Ondestroy_Resolver - Fatal编程技术网

Angular 角度2-当我让路由器导航时,解析器在当前页面上的OnDestroy之前做出反应

Angular 角度2-当我让路由器导航时,解析器在当前页面上的OnDestroy之前做出反应,angular,components,router,ondestroy,resolver,Angular,Components,Router,Ondestroy,Resolver,我有两条路线: {path: 'route1',component: component1,resolve: {parameters: resolver1}} {path: 'route2',component: component2,resolve: {parameters: resolver2}} 我从route1导航到route2,route2的解析器会在Ondestroy之前做出反应,这符合逻辑吗 我的问题是,如果我在Resolve2上调用一个服务,该服务将更新与page1上的obse

我有两条路线:

{path: 'route1',component: component1,resolve: {parameters: resolver1}}
{path: 'route2',component: component2,resolve: {parameters: resolver2}}
我从route1导航到route2,route2的解析器会在Ondestroy之前做出反应,这符合逻辑吗

我的问题是,如果我在Resolve2上调用一个服务,该服务将更新与page1上的observable绑定的object1,则此page1上所有observable的object1都将作出反应


我觉得这很奇怪,因为我们离开了页面。此外,如果服务请求出现在可观察对象中,它们也会做出反应,因此我们有太多的请求服务。

是的,这是完全合乎逻辑的。什么是解析器?这是一段代码,确保在初始化路由和加载组件之前加载一些初始数据,因此,例如,如果数据加载失败,保持在上一页,则不会向用户显示空白页。您可以这样想:当您启动导航时,如果有任何解析程序,它们将运行,并且如果(且仅当)成功加载数据,则先前的组件将被销毁(从而调用
ngondestory
)并替换为新组件,因此,是的,这不仅是完全合乎逻辑的,但实际上,这是实施这种行为的唯一正确方法。
您可以阅读有关解析器的更多信息

好的,我了解其行为,感谢您的解释。我将尝试寻找另一种方法,在当前页面上仅调用一次我的观察值,可能是您对此有什么想法吗?如果您提供一些对实际代码的见解,我可能会提供帮助