问题标签 [angular-resolver]
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 - 尽管“runGuardsAndResolvers”设置为“始终”,但 Angular 解析器没有更新或重新获取数据?
我有一组 Angular 路由,其中包含实体列表,以及用于创建此类实体和编辑现有实体的两个子路由。实体列表附有一个resolver
附件,用于在显示之前为组件预取数据。这些路线可以总结如下,请进一步了解这些路线在代码中的描述方式。
- 指数:
/items
- 创造:
/items/create
- 编辑:
/items/:itemId/edit
但是,如果我在/items/create
,并成功创建了一个项目,导航“返回”/items
或任何编辑路线,甚至返回/
不会导致我的解析器像我预期的那样获取更新的数据。尽管将runGuardsAndResolvers
属性设置为 "always"。我的理解是这个属性应该启用我正在寻找的功能。
为什么会这样,以及如何启用我正在寻找的功能,而无需执行诸如订阅组件中的路由器事件和复制逻辑之类的操作。
路线
物品解析器
项目HttpService
(应要求发布)
angular - Why would you use a resolver with Angular
I like the idea of resolver
s.
You can say that:
- for a given route you expect some data to be loaded first
- you can just have a really simple component with no observable (as retrieving data from
this.route.snapshot.data
)
So resolvers make a lot of sense.
BUT:
- You're not changing the URL and displaying your requested component until you receive the actual response. So you can't (simply) show the user that something is happening by rendering your component and showing as much as you can (just like it's advised to, for the shell app with PWA). Which means that when having a bad connection, your user may have to just wait without visual indication of what's happening for a long time
- If you are using a resolver on a route with param, let's take as an example
users/1
, it'll work fine the first time. But if you go tousers/2
, well nothing will happen unless you start using another observable:this.route.data.subscribe()
So it feels like resolvers might be helpful retrieving some data BUT in practice I wouldn't use them in case there's a slow network and especially for routes with params.
Am I missing something here? Is there a way to use them with those real constraints?
angular - Angular 4 处理复杂数据
我有这样的三个 A、B 和 C 类:
A、B 和 C 有自己的服务来通过 id 从 http 请求中获取数据,但数据来自
A 的某些行为取决于 C 项,因此我有三个带有“id”输入的组件(和) AComponent
,并且我在父组件上使用 @ViewChildren,并结合了一些 get/set 函数来获取所需的信息,但我没有不要以为我会走最好的路BComponent
CComponent
我想在开始之前做一个解析器来获取完整的 A 数据,但它有这么多的承诺。
您认为哪种方式是更好的解决方案?还有什么想法吗?
angular - CanActivate 在父 Resolve 完成之前运行子路由上的守卫
我正在尝试在导航到儿童路线之前解析数据,因为我必须在儿童警卫中使用该数据。问题是父解析器,在子守卫被解雇后解析数据。解析器需要很长时间才能解析数据
在这里,父解析器(即 SiteResolver)在子守卫(即 RouteGuard)被调用后解析。我想要的是 SiteResolver 首先解析数据,然后 RouteGuard 应该触发,我该如何实现?
angular - Angular Route Resolve 仅适用于不同的值
我有以下路线配置:
解析器将简单地执行 HTTP 调用来获取一些数据:
该组件包含一些选项卡,并具有一些相应地设置/更改矩阵参数的功能。
- 首次访问路由时,URL 将是
http://.../#/123
- 当用户单击一个选项卡时,它将变为
http://.../#/123;tab=foo
当用户现在手动更改 URL 时,解析器将再次运行。当他改变:id
. 但是,当他只更改参数时,它不应该发生。tab
知道怎么做吗?
我想distinctUntilChanged
在解析器中添加一些,但我无法让它工作。就像是:
但也许我只是做错了。
angular - 无法使用 Firestore 解析数据
我有一个 firebase 设置应用程序,需要在相关组件呈现之前获取集合中的所有文档。
数据来自正常订阅
但是当我使用像下面这样的解析器时,它不会解析数据或什么也没有发生。
服务
路由
零件
并在根模块中注册了我的解析器,其他非 Firebase 解析器工作正常。
为什么此设置解析程序不起作用?
版本
火力基地:4.11.0
角火2:^5.0.0-rc.6.0
角度:^5.2.0
angular - Angular 5 - 解析器应在收到初始 API 响应后开始解析
我遇到的情况是,只有在收到配置 API 响应后,解析器才应该开始解析。
最初,从 app.component.ts 调用配置 API。此响应保存在本地存储中。解析器需要从存储在本地存储中的配置数据中获取属性,以传递给从解析器调用的 API。
- 如果应用程序中已经存在本地存储,则解析器可以正常工作。
- 但是如果我们尝试直接点击 URL,解析器将不会收到本地存储数据,因为当解析器尝试访问它们时,配置 API 响应可能会延迟或未保存到本地存储。
更新:所有 API 调用都使用订阅功能
只有在接收到配置 API 响应并将其保存到本地存储后,我才能执行解析器。
提前致谢
angular - Angular 5/6 解析器和 Observable
试图在 Angular 6 中使用解析器,我真的快疯了。
我的解析器,工作版本:
我在路由中像这样注入它:
这工作正常,组件构造函数被触发,我可以从路由中检索 myValue。
但是,一旦我将解析器更改为:
或者任何返回 Observable 而不是普通值的代码,组件的构造函数不再被触发,并且我在我的路线上得到一个空白页。解析器代码仍然完整运行。
我通过在构造函数的第一行放置一个 console.log("foo") 来验证构造函数没有被触发,并且它没有被调用。
所以我不明白为什么我不能从我的解析器输出一个可观察的。解析器的全部意义在于解析延迟值(从而返回可观察对象)。
我究竟做错了什么?
angular - 路由器解析器不渲染组件
我有这个路由器解析器来从 Google Firestore 中检索数据。我正在尝试使用解析器提前获取数据。当我将调试器置于解析函数时,它会显示从服务器检索到的数据。但它永远不会从 resolve() 方法返回。谁能帮帮我。
路由模块
应用模块
解析服务
项目服务
** 项目组件(此组件从未被解析器加载 )**