【问题标题】:ERROR Error: Uncaught (in promise): TypeError: data.subscribe is not a functionERROR 错误:未捕获(承诺中):TypeError:data.subscribe 不是函数
【发布时间】:2021-11-02 15:02:06
【问题描述】:

Course-Tracker-component.ts

students: Student[];

private async getStudents(){
this.students = [];
const data = (await this.studentsService.getStudents());


data.subscribe(
  studentsResponse =>{
    studentsResponse.students.map(s => {
      this.students.push({
        id: s.id,
        first_Name: s.first_Name,
        last_Name:s.last_Name,
        middle_Name:s.middle_Name,
        gender:s.gender,
        dob:s.dob,
        address:s.address,
        email:s.email
      });
    });
  });

  console.log(this.students);
}

(学生服务.ts)

export class StudentsService extends HttpclientService{
constructor(private http: HttpClient) {
    super(http);
}

public getStudents():Observable<StudentsResponse>{
    return this.get(UniversityAPIUrl.GET_STUDENTS);}

(httpclient-service.ts)

protected get(relativeUrl: string){
    return this.httpClient.get<any>(this.baseUrl + relativeUrl, { headers:this.getHeaders()});
}

(学生.ts)

export class Student{
id: number;
first_Name: string;
last_Name:string;
middle_Name:string;
gender:string;
dob:Date;
address:string;
email:string;
}

(学生响应.ts)

export class StudentsResponse{
    students: Student[];
}

在我的 course-tracker-component.ts 中,我可以通过说 (console.log(data)) 来查看数据。但是,我无法获取数据可观察对象中的值。我想做的就是获取const data 的结果并将其推送到我的由学生对象组成的空学生数组中。

【问题讨论】:

    标签: angular angular12


    【解决方案1】:

    .toPromise() 实际上将原始httpClient.get() 方法返回的observable 转换为promise,方法是订阅observable 并在事件发生后用一个值解析promise。该值是 json 或文本值,而不是您可以订阅的 observable。这就是您收到该错误消息的原因。

    如果我是你,我会删除对 toPromise() 方法的调用,只使用 observable。

    顺便说一句,你可以简单地console.log当你看到这种错误信息时,你正在尝试调用一个方法的对象,这样你就可以看到实际的值;无论是promise、observable、实际数据还是其他……

    【讨论】:

    • 错误类型错误:无法读取未定义的属性(读取“地图”)。我已经按照您的要求完成了,现在这是错误
    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 2018-11-05
    • 2021-05-02
    • 2020-11-20
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多