Angular 2 - Pass parameters to Route

前端 未结 3 1973
面向向阳花
面向向阳花 2020-12-16 13:43

I have a tag like below,

Person

So I want to pass the person.

3条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-16 14:33

    Pass to router link:

    Person
    

    Handle in component:

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

    Second way:

    this.route.params.forEach(
       (params: Params) => {
           this.id = params['id'];
       }
    );
    

    In this example you have to inject ActivatedRoute (e.g as route property) like that:

    constructor(private route: ActivatedRoute) {}
    

    If you subscribe - it is important to unsubscribe Observable to prevent memory leaks.

    Full example:

    export class SimpleComponent implements OnInit, OnDestroy {
        private id: number;
        private route$: Subscription;
        constructor(private route: ActivatedRoute) {}
    
        ngOnInit() {
            this.route$ = this.route.params.subscribe(
                (params: Params) => {
                    this.id = +params['id']; // cast to number
                }
            );
        }
        ngOnDestroy() {
            if (this.route$) this.route$.unsubscribe();
        }
    }
    

    Config:

    export const routes = [
        ...
        { path : 'Person/:id', component : ...},
        ...
    ];
    

    Also, @RouteConfig is deprecated.

提交回复
热议问题