2017-09-19 39 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

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