angular 5+ та же маршрутизация, тот же компонент, но другой параметр, не отправлять http получить запрос на угловую подписку - PullRequest
0 голосов
/ 09 декабря 2018

Это мои app.modules

const appRoutes: Routes = [
  { path: 'topic/:topicTypeAngular', component: StoryTypeComponent, pathMatch : 'full'},
  { path: '**', component: PageNotFoundComponent}
];

Это моя навигация в html

<ul>
    <li> <a routerLink="topic/culture">Culture</a></li>
    <li><a routerLink="topic/tech">Tech</a></li>
</ul>

// Это отрывок component.ts и важная часть

import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpRequest, HttpEvent, HttpEventType, HttpParams } from '@angular/common/http';
import { ActivatedRoute } from '@angular/router';

   constructor(public http: HttpClient, private route: ActivatedRoute) {
         this.parameter = this.route.snapshot.paramMap.get('topicTypeAngular');
         let parameter = this.parameter;
    }


    ngOnInit() {
         this.route.url.subscribe(parameter => {
         let parameter = this.parameter;
          this.http.get('http://localhost:3200/cookbooks/topic/'+parameter).subscribe(httpResponse => {
              this.data = httpResponse;
              console.log(httpResponse);
            });

        })
     }

Последняя часть не предоставляет мне новые данные httpResponse.Эта ссылка похожа на мою проблему, но не точна.Однако я пытался, но не получилось.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Попробуйте это:

    constructor(public http: HttpClient, private route: ActivatedRoute) { }

ngOnInit() {

this.route.params.subscribe( param =>  this.http.get('http://localhost:3200/something/topic/'+param['topicTypeAngular']).subscribe(httpResponse => 
{ this.data = httpResponse; console.log(httpResponse);
 });
 ) 
0 голосов
/ 09 декабря 2018

Как насчет прямого получения параметров с pipe, например:

constructor(public http: HttpClient, private route: ActivatedRoute) {    
  this.route.paramMap.pipe(
    switchMap((params: ParamMap) => {
      this.parameter = params.get('topicTypeAngular');
      return this.http.get(`http://localhost:3200/something/topic/${this.parameter}`);
    })
  ).subscribe(
    result => console.log(result)
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...