问题标签 [angular-router-params]
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 - 为可注入服务构造函数提供可选参数 - Angular2
有 AppComponent 和 SecurityService。
AppComponent 是一种将注入安全服务的组件。
我的问题是:如何为安全服务构造函数提供这个可选参数值?
angular - 在路由器出口组件之外的组件中订阅路由参数
我有一个工具栏组件在路由器插座上方对齐。路由器插座具有表格和图表等各种组件。
能够订阅使用路由器插座显示的任何组件中的路由参数。
我想从不属于插座的工具栏组件访问路由参数。(捕获当前路径以在工具栏上显示路线名称)
主要成分:
工具栏组件:
表格组件:
angular - 以角度 5 更新 routeparams
我有一个这样的路线dashboard/tour/2/269
,这个组件代表旅游详细信息,并且在该组件内部有一些引用类似旅游的链接,所以当用户单击其中一个链接时,我想根据新参数重新加载组件,比如让我们说这个dashboard/tour/5/150
,我尝试使用直接[routerLink]
,但它将新参数附加到旧参数上,这样dashboard/tour/2/269/tour/5/150
路由变得无效。
请有任何建议。
angular - url参数错误时如何触发通配符路由?
在 Angular 6 中,我使用 observable 来管理基于 URL 参数获取详细记录,如下所示:
在 catchError 管道中,我只是导航到一个不存在的 URL,这会导致通配符路由触发并显示我的 PageNotFoundComponent。这似乎真的很令人费解,但我不明白如何让路由器显示该组件。有没有更好的办法?
javascript - Angular 路由器在 IIS 服务器上部署时删除查询参数
我尝试使用 Angular 路由器,但在部署应用程序时遇到了一些麻烦。首先,这是我的版本:
我想有 2 条可能的路线:
- mydomain.com/TestRouting/my-route
- mydomain.com/TestRouting/my-route?route=whatever
这似乎很容易,对吧?
这是我在特定模块中的路由定义:
当然,我已经在 AppModule 中导入了这个模块,在 app.component.html 中添加了 router-outlet 标记
在我的 RouteComponent 中,我以这种方式获取查询参数:
因为,我已经在 IIS 服务器上部署了网站,所以我添加了这个 web.config 文件:
问题:在本地,它运行良好......(ng serve)在本地和生产模式下,它也运行良好(ng serve --prod)
我使用以下命令构建应用程序: ng build --base-href /TestRouting/ --prod
部署后,
mydomain.com/TestRouting/重定向到mydomain.com/TestRouting/my-route(预期行为) mydomain.com/TestRouting/my-route呈现组件(预期行为)但 mydomain.com/TestRouting/my-route?route=测试重定向到mydomain.com/TestRouting/my-route(好吧,那不行......)
有人有想法吗?非常感谢你的帮助。
angular - Angular 5在查询参数更改时显示浏览器警报
我有一个具有路由'/Item'的父组件项。
我有两个子组件名称Catalog组件和AddSize组件。
默认情况下,目录组件将使用 route 加载'/item?q=catalogue'
。然后用户选择产品,然后路由将更改为'/item?q=add_size'
并加载 AddSize 组件。
现在,如果浏览器单击浏览器后退按钮,则查询参数将从 更改'/item?q=add_size'
为'/item?q=catalogue'
。
'/item?q=add_size'
当用户单击路由浏览器警报中的后退按钮不起作用时,我遇到了问题。
保护服务和主机侦听器在这种情况下没有帮助,因为我在同一条路线上,并期望浏览器警报仅用于查询参数更改。
我们有任何替代解决方案吗?
angular - Angular Router Resolve 功能不起作用
无法导航到 UserComponent 页面。如果我要从路由中删除 resolve 属性,那么它可以工作。但是当试图解析用户时它不起作用。任何帮助表示赞赏。
angular - 无法从 App.Component 读取查询字符串参数
我想集中我在整个应用程序中读取特定查询字符串参数的位置/方式,所以我认为最好的地方是在 app.component.ts
然后,在 上ngOnInit()
,我正在查看快照以及不同的订阅:
如您所见,我为params
、queryParams
和设置了订阅。queryParamMap
router.events
在页面导航之间触发的唯一一个是router.events
,但在那里,我必须手动解析 URL 以获取查询字符串。
不确定这是否对其有任何影响,但我正在覆盖路由重用策略,因此即使页面位于同一路由上,也会重新加载页面:
首次访问时的根页面输出:
解决方案
正如@Thomaz 和@Nathan 都指出的那样,我的问题是 App.Component 不在router-outlet
.
此外,@Nathan 还指出:
不过,您可以访问路由器事件并在应用程序中的任何位置对其进行迭代,这就是您的 router.events.subscribe(...) 触发的原因。
然后我在我的路线上启用了跟踪:
并看到该ActivationEnd
事件包括一个snapshot
具有查询参数的事件。最后,我订阅路由器事件并处理我的查询字符串值(如果事件是ActivationEnd
.
angular - 在某些情况下,带有 navigationExtras 的 ionic 4 router.navigate 不会覆盖 queryParams
我有一个库存应用程序(设备和浏览器),用户可以在其中保留爱好零件的库存。我有一个显示零件类别(零件箱)的仪表板。如果单击该类别,您会看到该类别中的零件,然后如果您单击某个零件,您将转到零件页面。
TL:博士;在底部。
仪表板 -> 箱 -> 零件
我正在使用Router
并navigationExtras
改变它queryParams
,我遇到了一些奇怪的问题。我将 queryParams 附加到 URL,以便用户可以在浏览器上添加书签或复制/粘贴 URL。
在仪表板页面上,当我点击一个垃圾箱时,我会得到垃圾箱的“类别”并将其作为一个queryParam
垃圾箱页面发送:
这很好用,当我进入 bins 页面时,我会收到 queryParams 并快速调用我的服务以获取仅与该类别相关的数组中的部分:
这工作正常。然后在同一页面上,我将另一个带有部件 ID 的 queryParam 发送到部件页面,并且基本上对部件数组执行相同的操作:
Bins 页面 - 将 queryParams 发送到 Parts 页面
零件页面,从 bin (url) 接收参数
然后,从部件返回到 bins 页面:
并从垃圾箱返回仪表板(注意我在这里清除了 queryParams)
如果我只从仪表板页面开始,一切都会正常工作。我加载到适当的垃圾箱和零件就好了。
TL;DR:问题是当我直接在 bin 页面或部件页面上开始时。如果我直接转到一个 bin 页面(例如 /dashboard/bins?type=antenna),我可以正常导航到仪表板和正确的部件页面,但如果我导航到仪表板并选择另一个 bin,我只会得到即使 URL 中的查询参数已更新,初始 bin 中的部分也是如此。
如果我也直接进入零件页面也会发生这种情况,但另外,如果我返回具有不同 ID 的零件页面,我将看不到其他零件。
我可以看到它没有接收到我通过控制台日志发送的新参数。按顺序,我会看到:
如您所见,我正在发送 ID85x...
并接收以前的 IDbHg...
此 queryParam 是否被缓存?如果是这样,我该如何销毁它?另外,为什么只有当我直接进入这些子页面时才会发生这种情况?
angular - Angular Router.navigate 使用 queryParams 导航到子路由
Angular.Router.navigate 无法使用 queryParams 导航到子路由
А已经尝试过:
我的路线:
当我尝试导航到“桌面/搜索?q=文件夹”时,出现以下错误:
怎么了?有没有办法使用带有普通查询参数的子路由,比如