首页 文章

angular 5相同的路由,相同的组件但不同的param,不在角度订阅上发送http get请求

提问于
浏览
0

这是我的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>

//这是组件摘录和关键部分

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数据 . 这link与我的问题相似,但不完全一样 . 但是,我试过但失败了 . 提前致谢

2 回答

  • 1

    试试这个:

    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

    怎么样用_44633这样直接得到params:

    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)
      );
    }
    

相关问题