Angular Router.navigate通过queryParams导航到子路由

瓦伦丁·切尔尼什(Valentyn Chernysh)

无法通过Angular.Router.navigate的queryParams导航到子路线

已经尝试过:

this.router.navigateByUrl('/desktop/search?q=folder'));

this.router.navigate(['desktop', 'search'], { queryParams: {q: 'folder'} });

this.router.navigate(['desktop/search'], { queryParams: {q: 'folder'} });

我的路线:

{
    path: 'desktop',
    component: FavoritesPageComponent,
    children: [
      { path: 'desktop-admin', component: DesktopAdminComponent },
      { path: 'favorites', component: FavoritesBodyMainComponent },
      { path: 'sessions', component: SessionsComponent },
      { path: 'search', component: FavoritesBodySearchComponent },
      { path: 'shared_with_me', component: FavoritesBodySharedComponent },
      { path: 'recycle', component: FavoritesBodyRecycleComponent } 
    ] 
}

当我尝试导航到“桌面/搜索?q =文件夹”时,出现以下错误:

ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'desktop/search%3Bq%3D%25D0%25BF%25D0%25B0%25D0%25BF%25D0%25BA%25D0%25B0'

怎么了?有没有办法使用带有常规queryParams的子路由

.../desktop/search?q=folder

this.route.queryParams.subscribe(params => {
   console.log('params['q']: ', params['q']);
});
莫特萨·埃布拉希米(Morteza Ebrahemi)

看这个例子:

1-声明路由参数:

// app.routing.ts    
export const routes: Routes = [
      { path: '', redirectTo: 'product-list', pathMatch: 'full' },
      { path: 'product-list', component: ProductList },
      { path: 'product-details/:id', component: ProductDetails }
    ];

要查看ID为10的产品的产品详细信息页面,必须使用以下URL:

localhost:4200/product-details/10 // it's not this -> /product-details?id:10

2-使用参数链接到路由:

<a [routerLink]="['/product-details', 10 or variable name]">
 title
</a>

要么

<a (click)="goToProductDetails($event,10)">
     title
</a>

// into component.ts
goToProductDetails(e,id) {
  e.preventDefault();
  this.router.navigate(['/product-details', id]);
}

3-读取路线参数:

// into component.ts

 constructor(private route: ActivatedRoute) {}

 ngOnInit() {
    this.route.params.subscribe(params => {
       this.id = +params['id']; 
    });
  }

我希望这可以帮助你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular 4,Router 4.0.0:routerLink 或 router.navigate 不会以编程方式重定向到子路由

我可以使用 Angular2 Router.navigate 在路由中途导航到带有 ID 的 url

Angular Router:导航到之前的路由会转义字符

使用router.navigateToRoute()导航到子路由

Angular2 Router 3.0 beta 1(通过Routerlink的子路由失败)

Angular Router-拦截子路由更改

Angular 2 Router跳过redirectTo并改用子路由

路由器导航到子路线-Angular 6

Angular router.navigate()增量

为什么Angular router.navigate()无法导航?

为什么 Angular router.navigate 不导航?

Angular 2 Router:导航到其他组件

Angular 2 Router:多个路由参数

Angular UI-router深度路由

在Angular UI Router中嵌套路由

this.router.navigate()无法导航到URL

Angular2-命名路由器出口不会导航到带有子路线的组件

Angular:如何在RouteGuard中相对于目标路由调用router.navigate()?

Angular Router:获取与当前路由匹配的路由配置

如何在angular2中通过Router.navigate传递RouteData

Angular 8 this.router.navigate() 更改 URL 但不渲染到下一页

Angular 5 router.navigate无法正常工作

如何测试Angular2的router.navigate?

具有查询参数Angular 5的router.navigate

在Angular2中的router.navigate之后执行代码

Angular变化检测未在Router.navigate()上触发

如何在Angular 4的$ .post中访问router.navigate()?

Angular2 router.navigate刷新页面

Angular 5命令.reduce不是router.navigate中的功能