订阅可观察到的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组件中的问题的主要内容,如果未能解决你的问题,请参考以下文章