私は、定義済みモデルとしてバックエンドからデータを取得するサービスを作成します。私はインターネットで研究をした後に解決できないというエラーを受けました。前に宣言した空の文字列にデータを渡そうとすると、コンポーネントでエラーが発生します。角度タイプコードエラー:タイプ 'string'はタイプ 'any []'に割り当てられません
これは私のサービスである:
import { Observable } from 'rxjs/Observable';
import { Injectable, Inject } from '@angular/core';
import { Http, Response } from '@angular/http';
import { ORIGIN_URL, API_PREFIX } from '../shared/constants/baseurl.constants';
import { History } from '../models/history';
import 'rxjs/add/operator/map';
@Injectable()
export class HistoricalBpiService {
private apiUrl: string;
constructor(
private http: Http,
@Inject(ORIGIN_URL) private baseUrl: string,
@Inject(API_PREFIX) private apiPrefix: string
) {
this.apiUrl = baseUrl + apiPrefix;
}
oneYear(): Observable<History[]> {
return this.http.get(this.apiUrl + 'data/history/365')
.map((res: Response) => res.json() as History[])
.catch(this.handleError);
}
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
}
これはモデルです:
export interface History {
date: string;
value: number;
}
これはコンポーネントです:
import { Component, OnInit, Inject, PLATFORM_ID } from '@angular/core';
import { HistoricalBpiService } from '../../services/historical-bpi.service';
import { isPlatformBrowser, isPlatformServer } from '@angular/common';
import { History } from '../../models/history';
@Component({
selector: 'app-banner',
templateUrl: './banner.component.html',
styleUrls: ['./banner.component.scss']
})
export class BannerComponent implements OnInit {
history: History[] = [];
public lineChartData: any = [
{ data: [], label: 'BTC' }
];
public lineChartLabels: Array<any> = [];
constructor(
private historicalBpiService: HistoricalBpiService,
@Inject(PLATFORM_ID) private platformId: Object
) {}
oneYear() {
this.historicalBpiService.oneYear()
.subscribe((data: History[]) => {
this.history = data;
for (let i of this.history) {
this.lineChartData[0].data = i.value;
this.lineChartLabels = i.date; // THIS LINE CAUSES ERROR !!!
}
});
}
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
// Default chart
this.oneYear();
}
}
}
をansweeが – Sajeetharan