私は製品のインターフェースを持っています:
export interface Product{
code: string;
description: string;
type: string;
}
メソッド呼び出し製品エンドポイントのあるサービス:
public getProducts(): Observable<Product> {
return this.http.get<Product>(`api/products/v1/`);
}
そして、このサービスを使用して製品を取得するコンポーネント。
export class ShopComponent implements OnInit {
public productsArray: Product[];
ngOnInit() {
this.productService.getProducts().subscribe(res => {
this.productsArray = res;
});
}
}
この状態では、エラーが発生します。
[ts]タイプ 'Product'には、タイプ 'Product []'の次のプロパティがありません:length、pop、Push、concat、および26など。 [2740]
productsArray
変数への入力を削除するとエラーが削除されますが、サーバーの応答はProducts
のタイプのオブジェクトの配列であるため、これが機能しない理由はわかりません。
私は同じ問題を抱えていて、次のように解決しました
export class Notification {
id: number;
heading: string;
link: string;
}
そしてnofificationService書き込み
allNotifications: Notification[];
//NotificationDetail: Notification;
private notificationsUrl = 'assets/data/notification.json'; // URL to web api
private downloadsUrl = 'assets/data/download.json'; // URL to web api
constructor(private httpClient: HttpClient ) { }
getNotifications(): Observable<Notification[]> {
//return this.allNotifications = this.NotificationDetail.slice(0);
return this.httpClient.get<Notification[]>
(this.notificationsUrl).pipe(map(res => this.allNotifications = res))
}
およびコンポーネントの書き込み
constructor(private notificationService: NotificationService) {
}
ngOnInit() {
/* get Notifications */
this.notificationService.getNotifications().subscribe(data => this.notifications = data);
}