Как установить параметры запроса routerLink в значение свойства?

#angular #angular2-routing #angular2-router3

#angular #angular2-маршрутизация #angular2-router3

Вопрос:

Мне нужно установить [queryParams] для a routerLink с помощью свойства компонента, то есть

 @Component({
   ...
   template: '<a [routerLink]="..." [queryParams]="queryParams | async">...</a>
   ...
})
export class MyComponent {
   ...
   queryParams: any;
   ...
   constructor(route: ActivatedRoute) {
      this.queryParams = route.queryParams;
      ...
   }
}
  

Но этот подход не работает, к маршруту не добавляются параметры запроса. Чего мне не хватает?

Комментарии:

1. действительно async ли там нужен канал?

2. Какое значение this.queryParams имеет?

3. Это BehaviorSubject , если я подпишусь на него и войду в консоль, я получу Object {datum: "19-10-2016"} datum : "19-10-2016" __proto__ : Object

Ответ №1:

Вы можете добавить параметры запроса, используя этот правильный синтаксис

   this.router.navigate([yourRouteName], {queryParams:{ida:1,Idb:2,Idc:3}});
  

или

 <a [routeLink]="yourRouteName, {queryParams:{ida:1,Idb:2,Idc:3}}"
  

затем вы можете получить параметр запроса, используя приведенный ниже синтаксис

 import { Router, Route, ActivatedRoute } from '@angular/router';    
ngOnint{
        this.IDA= this.router.routerState.snapshot.root.queryParams["Ida"];
        this.IDB= this.router.routerState.snapshot.root.queryParams["Idb"];
        this.IDC= this.router.routerState.snapshot.root.queryParams["Idc"];
    }
  

Надеюсь, это вам поможет.