2016-11-15 6 views
1

у меня есть маршрут, как этотУгловое 2 Router Link с несколькими параметрами

path: 'projects/:id/settings' 

И в моем header.component.html я хочу, чтобы иметь ссылку на эту страницу

<a routerLink="['projects', progectId,'settings']" routerLinkActive="active">cool link</a> 

У меня есть project.component, где, когда я нажимаю на какой-либо проект, я перехожу на страницу проекта. И тогда мне нужно иметь возможность перейти на projects/:id/settings или другой аналогичный маршрут.

Как передать progectId переменную от projects.component?
Или, может быть, кто-то знает другой способ реализовать это.

ответ

4

Я была такая же проблема для такого рода route вы должны использовать routerLink так:

<a routerLink="/projects/{{progectId}}/settings" routerLinkActive="active">cool link</a> 

и изменить свой route path в routing module так:

{ path: ':id/settings', component: YourComponent} 

для получения дополнительной информации, чтобы получить projectId вы должны сделать следующие шаги:

  1. Inject ActivatedRouteobject в вашем component constructor.
  2. Определите variable под названием projectId в вашем component.
  3. paramsactivatedRouteobjectngOnInit() способ.
  4. Наконец, вы должны getprojectId в вашем html так: {{projectId}}

    import {Router, ActivatedRoute, Params} from '@angular/router'; 
    
    @Component({ 
        selector: 'app-your-component', 
        templateUrl: './your-component.component.html', 
        styleUrls: ['./your-component.component.css'] 
    }) 
    
    export class YourComponent implements OnInit { 
    
        private projectId: string; 
    
        constructor(private activatedRoute: ActivatedRoute) {} 
    
        ngOnInit() { 
        this.activatedRoute.params.subscribe((params: Params) => { 
        this.projectId = params['id']; 
        }); 
    }} 
    
0

я вообще сделать это в классе компонента, как этот

somefunctionName() { 
    let link = ['/summary', this.param1, this.param2]; 
    this.router.navigate(link); 
} 

И затем вызвать функцию из кода HTML, как этот

<a (click)="somefunctionName()"> 

В вашем случае, так как я предполагаю, что вы циклически ваши проекты вы могли бы назвать своей функцией с таким параметром

<a (click)="somefunctionName(pass the parameter here)"> 

Затем измените определение функции, чтобы отразить это.

+0

Извините, но, может быть, лет не понять меня. Я знаю, как построить ссылку. Я спрашиваю, как я могу получить: id parametr из другого компонента? Потому что я имею его только в project.component, но хочу иметь его в header.component. –

+0

Извините, что я не понял ваш вопрос. Можем ли мы видеть, как вы вызываете другой компонент в своем html? В зависимости от этого кода это будет простой случай входной переменной или дочернего элемента представления. – TyAnthoney

+0

Я решаю эту проблему, создав службу, в которой я сохраняю текущий проект, а затем могу использовать его в любом месте –

Смежные вопросы