我正在使用spring引导和angular进行一些应用程序创建,但当我试图将angular链接到spring时,总是出现此错误。
"类型'Observable'不能分配给类型'Observable<ErrorClass[]>'。Object类型可以赋值给很少的其他类型。你是想用any类型来代替吗?类型'Object'缺少来自类型'ErrorClass[]'的以下属性:length, pop, pus">
类:
export class ErrorClass{
id: number;
title: string;
description: string;
dateOfCreation: string;
}
问题区域:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { ErrorClass } from '../models/ErrorModel';
@Injectable({
providedIn: 'root'
})
export class ErrorServiceService {
private baseUrl = "http://localhost:8080/api/v1/errors";
constructor(private client: HttpClient) { }
public getErrorList(): Observable<ErrorClass[]>{
return this.client.get(`${this.baseUrl}`);
}
}
你的getErrorList
函数返回ErrorClass
数组的Observable。HttpClient.get()方法将JSON服务器响应解析为匿名类型。它不知道返回的响应的形状。
为了在编译时抑制类型错误,从http get
请求返回typed
响应。
public getErrorList(): Observable<ErrorClass[]> {
return this.client.get<ErrorClass[]>(`${this.baseUrl}`);
}
请求类型响应
构造你的HttpClient请求来声明响应的类型对象,以使使用输出更容易和更明显。指定响应类型在编译时充当类型断言。
指定响应类型是对TypeScript的一个声明应将您的回复视为给定类型。这是一个构建时检查并不能保证服务器实际运行使用此类型的对象进行响应。这取决于服务器来确保返回服务器API指定的类型
参见- https://github.com/angular/angular/blob/main/aio/content/guide/http.md