2017-09-19 36 views
0

我有一個模型來存儲一些數據。 我創建了一個模型的排列在我service.Like這個如何將數據推到angular2中的模型陣列中

modelArray: MyModel[]; 

但是當我嘗試將一些數據推到陣列失敗與錯誤

無法讀取的不確定

財產推
this.modelArray.push(currentData);//THE PROBLEM CODE 

我不確定正確的做法。

我的服務代碼如下所示:

import { Injectable } from '@angular/core'; 
import { Headers, Http, Response } from '@angular/http'; 
import 'rxjs/add/operator/toPromise'; 

import { NgAuthService } from '../shared-service/service/ng-auth.service'; 
import { AppLocalStorageService } from '../shared-service/service/app-local-storage.service'; 
import { MyModel } from './model/my-model'; 
@Injectable() 
export class ModelService { 
    authObj: any; 
    appConstants: any; 
    baseUrl: any; 
    count: any; 
    modelArray: MyModel[]; 

    constructor(private http: Http, public ngAuth: NgAuthService, public localStorage: AppLocalStorageService) { 
     this.authObj = this.ngAuth.getNgAuth(); 
     this.appConstants = this.ngAuth.getAppConstant(); 
     this.baseUrl = this.authObj.apiServiceBaseUri; 
    } 
    /*Get data using Api*/ 
    public getCompanydata(sinceId: any, isBookmarked: any) { 

     var Url = this.baseUrl + this.ngAuth.getApiUrl('getdata') +'?bookMarked=false&count=25'; 
     var authData = JSON.parse(this.localStorage.localStorageGet('authorizationData')); 
     var token = 'Bearer ' + authData.token; 
     var self = this; 

     var headers = new Headers(); 
     headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
     headers.append('Authorization', token); 

     return this.http.get(Url, { headers: headers, method: 'GET' }) 
      .toPromise() 
      .then(function (response: any) { 
       return response.json(); 
      }) 

    } 
    /*Set blurbsArray*/ 
    public setBlurb(data:any) { 
     var s = data.dataArray; 
     var bArray = []; 
     for (let i in s) { 
      var currentData = new MyModel(); 
      currentData.isShareableToFacebook = s[i].isShareableToFacebook; 
      currentData.author = s[i].author; 
      currentData.publishedDate = s[i].publishedDate; 
      currentData.contentSourceType = s[i].contentSourceType; 
      currentData.bookMarked = s[i].bookMarked; 


      this.modelArray.push(currentData);//THE PROBLEM CODE 
     } 


    } 
    /*return blurbsArray*/ 
    public getBlurb() { 
     return this.modelArray; 
    } 

    public checkIsPostedToSocial(provider: any, socialData: any) { 
     var providerFound = false; 

     for (let i in socialData) { 
      if (socialData[i].provider == provider) { 
       providerFound = true; 
       if (socialData[i].posted) { 
        return true; 

       } 
       else { 
        return false; 
       } 

      } 
     } 

     if (!providerFound) { 
      return false; 
     } 
     return true; 
    } 

    public checkIsScheduledToSocial(provider: any, socialData: any) { 
     var providerFound = false; 
     console.log(socialData); 

     for (let i in socialData) { 
      if (socialData[i].provider == provider) { 
       providerFound = true; 
       if (!socialData[i].posted) { 
        return true; 

       } 
       else { 
        return false; 
       } 

      } 
     } 

     if (!providerFound) { 
      return false; 
     } 
     return true; 
    } 





} 

雖然我能夠在陣列分配給此模型排列像下面

this.modelArray = bArray; 

,但不能推。

請指導,如果方法正確與否 感謝

+0

什麼是錯誤日誌?這個setBlurb在哪裏叫 –

回答

5

我想你

無法讀取的不確定

財產推你尚未初始化modelArray。這是currently未定義,您嘗試撥打undefined上的功能push。使用this.modelArray = bArray它可以工作,因爲您的bArray已初始化,並且該引用已分配給指向就緒數組對象的modelArray

使其指向一個空數組(指代某物)。

modelArray: MyModel[] = []; 
+0

謝謝!我忘了初始化.. –