我正在使用一个现有应用程序,该应用程序具有多个页面,其中包含分页/排序和表格。模态是通过路由打开的,这会导致如下网址:http://www.example.com/table;sort=name,desc/new
有什么办法请问this.router.navigate()生成搜索网址吗?我需要使用this.router.navigate,因为链接是相对于URL的。所以routerLink在这里不起作用。
问题是默认情况下this.router.navigate将对导致路由失败的URL进行编码。
更新:好吧,我找到了答案。一个可以做this.router.navigate(this.router.url,{sort:'name,desc'},'new'],{relativeTo:this.route});
不得不在基本URL中收集参数以再次传递它们很烦人。
我认为这里的选择取决于您是否希望能够直接使用URL来引用模式。
如果需要,那么我建议将您的网址改成类似的内容
http://www.yoursite.com/table?sort=name,desc
[当您想将它们引用到模式时,您也可以将参数传递给另一个URL,如下所示:
http://www.yoursite.com/table/modal?sort=name,desc
如果想将参数返回到基本/ table页面,可以用两种方法解决参数保存问题。如果先前的URL是模式链接,则可以侦听路由器的更改并复制参数,也可以将html中的routerLink更改为表格页面,然后将当前参数放在此处。
如果不需要直接引用模式,最好将信息存储在服务中或将其保存在组件本身中,因为模式可以直接加载在组件顶部。