如何使用快照或Angular中的ActivatedRoute订阅者从URL获取ID?

问题描述 投票:2回答:2

我正在使用快照方法获得价值,但它是在“类”路径之后获得价值,例如获得

credits/33/classes/20 only 20 or credits/33/classes/ only null("")

更新:我找到了解决问题的方法。

现在它已正确获取ID。错误是访问正确的子组件中的元素,而不是在Snapshot版本中的子MatDialog组件中工作。

constructor(private route: ActivatedRoute) {} 
 ngOnInit(): void {
   console.log(parseInt(this.route.parent.snapshot.paramMap.get('id')));
}
angular angular-router angular-activatedroute
2个回答
6
投票

您在路由模块中的路径将是

const appRoutes: Routes = [
{ path: 'credits/:id1/classes/:id2', component: YourComponent }];

假设id1为33并且id2是20

代码将是:使用ActivatedRoute而不是ActivatedRouteSnapshot

import { ActivatedRoute } from '@angular/router';

constructor(private route: ActivatedRoute) {

ngOnInit() {
this.route.params
      .subscribe(
        (params: Params) => {
          this.id1 = +params['id1'];
          this.id2 = +params['id2'];
          console.log(id1 + '' + id2);
        }
      );
    }
}

1
投票

创建一条路由,将在其中路由到您的组件,并将其添加到您的模块中。

const appRoutes: Routes = [
{ path: 'credits/:id1/classes/:id2', component: MyComponent },
{ path: 'credits/:id1', component: MyComponent }];

然后,您可以使用ActivatedRoute来获取参数。

 export class MyComponent implements {
  id1: string;
  id2: string;

  constructor(private route: ActivatedRoute) { 
    this.id1 = this.route.snapshot.params['id1'];
    this.id2 = this.route.snapshot.params['id2'];
  }

}

StackBlitz here

© www.soinside.com 2019 - 2024. All rights reserved.