Angular 如何使用snapshot或ActivateRoute订阅服务器从URL中获取id?

Angular 如何使用snapshot或ActivateRoute订阅服务器从URL中获取id?,angular,angular-router,angular-activatedroute,Angular,Angular Router,Angular Activatedroute,我使用snapshot方法获取值,但在本例中,它是在“classes”之后获取值20,但我需要33个路径,如获取 credits/33/classes/20 only 20 or credits/33/classes/ only null("") 更新: 我找到了我问题的答案 现在它正在正确地获取id。错误在于访问正确子组件中的元素,在快照版本中子组件的MatDialog组件中不起作用 constructor(private route: ActivatedRoute) {

我使用snapshot方法获取值,但在本例中,它是在“classes”之后获取值20,但我需要33个路径,如获取

credits/33/classes/20 only 20 or credits/33/classes/ only null("")
更新: 我找到了我问题的答案

现在它正在正确地获取id。错误在于访问正确子组件中的元素,在快照版本中子组件的MatDialog组件中不起作用

constructor(private route: ActivatedRoute) {} 
 ngOnInit(): void {
   console.log(parseInt(this.route.snapshot.paramMap.get('id1')));
如果url有2个Id值,则可以使用route.parent的快照


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

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);
        }
      );
    }
}

创建将路由到组件的路由,并将其添加到模块中

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'];
  }

}

 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'];
  }

}