2017-05-12 96 views
0

我有一個@Injectable類,在Service.ts中創建一個獲取函數。這個函數應該返回一個數組,並獲得任何數組。但它返回null。如果我直接在@Component中寫這個,那麼它會得到數組。我究竟做錯了什麼?Angular2 @Injectable not working

service.ts

@Injectable() 
export class Arr_selected { 
    private arr = []; 
    get(arr_selected: any[]){ 
     for(let key in arr_selected) { 
      if (arr_selected.hasOwnProperty(key)) { 
       this.arr.push([key]); 
       return this.arr; 
      } 
     } 
     console.log(this.arr); 

    } 

} 

component.ts

import {Arr_selected} from './service.ts'; 
export class Component implements DoCheck, OnChanges, OnInit { 
.... 
constructor(public arr_selected: Arr_selected) 
..... 

ngOnInit{ 

    let chk = this.ChkBoxValue; 

    let arr = []; 

/// **this not working Array is null**///// 
    arr=(this.arr_selected.get(this.ChkBoxValue)); 

/// **this is working Array is not null**//// 
    for (let key in this.ChkBoxValue) { 
      if (this.ChkBoxValue.hasOwnProperty(key)) { 
       arr.push(this.ChkBoxValue[key]); 
     } 
     } 
     console.log(arr); 
}} 
+0

您是否正在導入服務並將其注入到組件中? –

+0

謝謝,是的,我正在導入 - > import {Arr_selected} from ./ servece.ts; – ran

+0

也許是一個沉睡者? – elvin

回答

0

本人認爲以下應該工作

@Injectable() 
export class Arr_selected { 
     get(arr_selected: any[]){ 
      arr = []; 
      for(let key in arr_selected) { 
       if (arr_selected.hasOwnProperty(key)) { 
        arr.push([key]); 
        return this.arr; 
       } 
      } 
      console.log(this.arr); 

     } 

我覺得 「這個」 操作原因造成的問題給你。您還在組件中定義了arr。這可能是相互衝突的使用。

+0

謝謝,但它不工作,沒有'這'我得到一個錯誤。 – ran

+0

你必須將arr []移動到我的代碼所示的函數中。如果你把它作爲一個類變量,那麼你必須保持這一點。 –

+0

謝謝,但它不工作(, 它仍然爲空 – ran

0
Above code you have written your file name as service.ts 

和./servece.ts

import {Arr_selected} from'./servece.ts; 

進口可能是這裏的打字錯誤,也 你在組件的供應商加入你的服務?

+0

謝謝,我寫得正確,它輸入錯誤)) - >「從{。提供者:[Arr_selected] – ran