订阅可观察到的Angular 8组件中的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了订阅可观察到的Angular 8组件中的问题相关的知识,希望对你有一定的参考价值。

我正在尝试通过httpclient获取数据,因为我使用了Observable,并试图将该Observable订阅到组件这样做我出现错误

this.res.job.map不是函数在SignupComponent.jobTitle

SignupComponent.ts

    import  Component, OnInit  from '@angular/core';
    import  SignupService  from '../service/signup/signup.service';

    @Component(
      selector: 'app-signup',
      templateUrl: './signup.component.html',
      styleUrls: ['./signup.component.scss']
    )
    export class SignupComponent  


     constructor(private fb: FormBuilder ,public res : SignupService )  
   this.jobtitle() 


    jobtitle()
        this.res.jobTitle.map((res : Response) => res.json()).subscribe(result => 
          console.log(result);
        )
      

    

服务

     import  Injectable  from '@angular/core';
    import  observable, Observable  from 'rxjs';
    import  HttpClient  from '@angular/common/http';


    @Injectable(
      providedIn: 'root'
    )
    export class SignupService 

     constructor(public http: HttpClient) 

  jobTitle() : Observable<any>
     return this.http.get(this.jobTitle);
   
    
答案

我们不需要使用HttpClient进行映射

而且您还忘记了将括号()添加到jobTitle()功能尝试这样:

this.res.jobTitle().subscribe(result => 
  console.log(result);
)
另一答案

嗨,这个错误试图告诉oyu,是res.jobTitle不存在。尽管没有,但您像服务this.jobTitle的字段一样使用它。因此,undefined.map不是功能。除了map()只能在pipe()内部调用

而且我也不确定为什么您将jobTitle用作输入http.get()。由于get()希望将url作为输入,而其余的your代码准备就绪,就好像jobTitle应该是您得到的值。

另一答案

[对于使用RXJS运算符(如地图,过滤器等...),您需要为每个运算符使用pipe()方法,并将要使用的所有运算符放在pipe()方法内。因此,运算符不是RXJS 5.5中引入的方法。

以上是关于订阅可观察到的Angular 8组件中的问题的主要内容,如果未能解决你的问题,请参考以下文章

退订 RxJS 可观察到的影响

Angular 2:可观察订阅未正确读取数据[重复]

带有引导事件的 Angular2 不会触发可观察到的变化

如何取消订阅角度组件中的多个可观察对象?

可观察 - 多个订阅者

订阅可观察对象返回未定义