我正在尝试通过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);
}
}
答案 0 :(得分:3)
我们不需要使用HttpClient进行映射
您还忘记了在()
函数中添加括号jobTitle()
尝试这样:
this.res.jobTitle().subscribe(result => {
console.log(result);
})
答案 1 :(得分:1)
您好,错误是试图告诉oyu的,是res.jobTitle
不存在。
尽管没有使用,但您像服务this.jobTitle
的字段一样使用它。
因此undefined.map
不是函数。
除此之外,map()
只能在pipe()
我也不知道您为什么要使用jobTitle作为输入http.get()
。
由于get()
希望将url作为输入,而其余的your代码准备就绪,就好像jobTitle应该是您得到的值。
答案 2 :(得分:0)
要使用RXJS运算符(如地图,过滤器等),您需要为每个运算符使用log_message('error :',$e->getMessage());
return;
方法,并将要使用的所有运算符放在 public function add()
{
try {
$this->db->trans_start(FALSE);
$this->db->insert('users', $preparedData);
// documentation at
// https://www.codeigniter.com/userguide3/database/queries.html#handling-errors
// says; "the error() method will return an array containing its code and message"
$db_error = $this->db->error();
if (!empty($db_error)) {
throw new Exception('Database error! Error Code [' . $db_error['code'] . '] Error: ' . $db_error['message']);
return false; // unreachable return statement !!!`enter code here`
}
return TRUE;
} catch (Exception $e) {
// this will not catch DB related `enter code here`errors. But it will include them, because this is more general.
log_message('error ',$e->getMessage());
return;
}
}
方法内。因此,运算符不是RXJS 5.5中引入的方法。
例如:
pipe()
旧方法看起来像这样(现在不起作用):
pipe()