2017-11-13 22 views
0

私は、定義済みモデルとしてバックエンドからデータを取得するサービスを作成します。私はインターネットで研究をした後に解決できないというエラーを受けました。前に宣言した空の文字列にデータを渡そうとすると、コンポーネントでエラーが発生します。角度タイプコードエラー:タイプ '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(); 
    } 
    } 
} 
+0

をansweeが – Sajeetharan

答えて

1

私はthis.lineChartLabelsはあなたがそれに文字列を割り当てることはできませんArray<any>あるのでi.dateは、stringであることを推測しています。割り当ての代わりにプッシュする

ベスト:

this.lineChartLabels.push(i.date) 
+0

は、それが動作はい、ありがとう助けた場合マークしてください。 –

+0

は以下の投稿と同じ回答ではありません – Sajeetharan

1

エラーが言うように、あなたが割り当てしようとしていますいずれかの型の文字列 文字列を配列にプッシュする必要があります。

this.lineChartLabels.push(i.date); 
関連する問題