2017-05-12 4 views
0

を働いていない私はService.tsのGet-機能付き@Injectableクラスが作成しています。この関数は1つの配列を返し、配列も取得します。しかし、それはnullを返します。これを直接@Componentに書き込むと、配列が取得されます。私は間違って何をしていますか?私は以下のAngular2 @Injectable

@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); 

     } 

を動作するはずと考え

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

は、私が "これ" オペレータが原因になっていると思いますあなたのための問題。コンポーネントには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

おかげで、私は正しい書かれ、それがエラーを入力して、まだnullの)) - >「「./service.ts'からインポート{Arr_selected};」私が追加していますプロバイダ:[Arr_selected] – ran