问题标签 [angular2-resolve]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 具有 Http 数据服务的 Angular2 路由器通过带有 Observable 捕获 404 的 Resolve
在我的解决方案中,我得到一个 Http Observable 来从特定的id
.
id
如果不存在,我想捕获错误并重新路由到用户概述。我见过用 Promise 解决这个问题的代码,但不是用 Observable 解决的。我想看到一个带有 Observable 的解决方案!
目前我得到一个"EXCEPTION: Uncaught (in promise): Response with status: 404 Not Found for URL: http://127.0.0.1:3000/users/191"
因为用户 191 不存在。
这是我的代码:
解决:
用户服务获取用户(id):
user.routing.ts:
用户详细信息组件:
angular - 在Angular2中将Resolve应用于根组件
在Angular2中我们可以使用Resolve
如下:
但是我怎样才能最好地应用解析器来运行,例如,我的app.component.ts
?也许当网站第一次加载时,无论首先加载哪个页面,我总是需要先获取用户数据(例如)。那么我怎样才能让这个解析器在路由层次结构的下方应用呢?
angular - Angular2 Routing-Resolve 接口使用与 OpaqueToken
我想在实例化路由/组件之前获取数据。因此,我想使用 Angular2-Routing-Module 中的“解析器”接口。
看看我的代码。它使用字符串作为提供程序名称,但如果我为提供程序使用 OpaqueToken 则会引发错误。
注意“不工作”的评论。
1 我的(儿童)路线(摘录)。
2 我的模块代码(摘录):
3 我的自定义解析器类(摘录):
不可能用创建的 OpaqueToken(“MyToken” - 当然不带引号)替换字符串(“myResolver”)。不知道为什么。我为多个提供者使用了多个 OpaqueToken,但解析器无法使用它。
控制台中的错误消息如下所示,没有更多信息。
错误:必须定义令牌!
有人知道吗?
angular - 使用 Resolve 停止路线更改
我有一个 angular2 应用程序,其中列出了许多项目,用户可以单击以获取有关该项目的更多详细信息。
现在,其中一些项目我实际上并没有详细信息 - 当我提出服务请求时我会知道,因此我不想加载带有 404 或其他内容的页面,我只是不想让他路由到那个页面。
我正在使用 Resolve 加载项目,所以理论上它应该非常简单,但我无法弄清楚如何在某些条件下阻止路线发生变化。
我尝试使用Location.back
,但这似乎根本不起作用。
angular - 按顺序链接可观察对象并从上次调用中返回值
我有一个路由解析器,我需要按顺序进行两个方法调用,它们都返回 observables。我不需要对第一次调用的响应做任何事情,但我想将第二次调用中返回的数据返回到路由组件。有人可以给我一个如何做到这一点的例子吗?我想我应该使用 flatMap() 但我似乎无法让它工作。
所以基本上: firstMethod(): Observable -> secondMethod():Observable <--从中返回值。
angular - Angular:区分参数和子路由
我有一种情况,如果子路由是参数,而不是路径段,我想要一个解析器。下面是我的代码。
当我点击路径agreement/create
时,它会抛出错误,因为create
它被认为是参数的值id
并且它是无效的。
请帮我解决一下这个。
angular - Angular:即使在服务返回后,解析器也会延迟组件加载
我有一些数据必须在页面加载之前加载,我正在使用路由解析器来实现这一点。下面是我的代码。
服务:
解析器:
路由模块:
在路由到的组件中:
在拦截器中:
我使用了一个微调器(使用HttpInterceptor
),它在调用后端服务时显示并在服务返回后消失。现在,即使在后端服务返回后,组件也需要很长时间才能加载,所以在微调器消失后,用户仍然在同一页面上一段时间(大约 10 秒),然后才路由到目标页面。
我不明白是什么导致了这种延迟,我哪里错了。请帮我解决一下这个。