Как вы передаете переменную внутри [routerlink] - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно передать ток userId в routerlink в borrow_list component

Способ, которым я объявляю userId в borrow_list component

userId: number;
constructor(private authService: AuthService, private bookService: BookService,
     private route: ActivatedRoute, private alertify: AlertifyService) { }



ngOnInit() {
    this.userId = this.authService.decodedToken.nameid;
    this.route.data.subscribe(data => {
      this.books = data['books'].result;
      this.pagination = data['books'].pagination;
    });
    this.borrowParam = 'loan';
    console.log(this.userId); // this one return 26
  }

Затем я попытался пройтиuserId к другому компоненту, используя routerlink

<div class="row">
  <div *ngFor="let b of books" class="col-sm-6 col-md-4 col-lg-4 col-xl-2">
    <app-book-card [book]="b"></app-book-card>
    <button class="btn btn-primary" [routerLink]=" 
     ['/browse/book/',this.userId,'/content/', b.id]" style="width: 75px">Read 
    </button>
  </div>
</div>

Но, похоже, он не работает, без ошибок, но он возвращает меня на домашнюю страницу

Когда я пытаюсь жестко закодировать ссылку ион работает как задумано, т.е.

[routerLink]="['/browse/book/26/content/', b.id]"

Мой routes.ts

{path: 'browse/book/:id/content/:bookId', component: Book_contentComponent, resolve: {book: BookContentResolver}}

Я думаю, что я где-то ошибся?

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

пожалуйста, попробуйте это:

<button class="btn btn-primary" [routerLink]=" ['browse', 'book', userId, 'content', 
b.id]" style="width: 75px">Read </button>

Каждый сегмент пути является элементом массива.

0 голосов
/ 29 апреля 2019

В шаблоне переменные автоматически берутся из базового компонента.Поэтому вам не нужно ставить this для доступа к переменным-членам.

В вашем коде вам просто нужно userId вместо this.userId, что дает:

<button class="btn btn-primary" [routerLink]=" 
 ['/browse/book/', userId,'/content/', b.id]" style="width: 75px">Read 
</button>

Примечание : не рекомендуется вставлять style в ваш HTML-код.

...