2016-05-13 16 views
1

Lookupコンポーネントを使用しています。データオブジェクトが定義されていないため、.filter()できません。以下のコードは次のとおりです。ng-lightning - 参照でデータオブジェクトが定義されていません

getAllAccounts() { 
    this._quickAddService.getAllAccounts() 
     .subscribe(
     accounts => this.getAllAccountsFinished(accounts), 
     error => this.errorMessage = <any>error); 
} 

getAllAccountsFinished(accounts:any) { 
    this.accounts = accounts; 
    console.log(this.accounts); 

    this.hideSpinner(); 
} 

ngOnInit(){ 
    this.getAllAccounts(); 
} 

lookup(query: string): Account[] { 
    if (!query) { 
     return null; 
    } 

    return this.accounts.filter((item) => item.name.toLowerCase().indexOf(query.toLowerCase())>-1); 
} 

にconsole.logは、サービスが返す終了後にデータが正しくバインドされていることを示していること。しかし、入力時にルックアップが起動された場合、this.accountsは未定義です。

+0

:?

this.lookup = (query) => { this.lookup(query); }; 

詳細については、このリンクを参照してください。 –

+0

これは、テンプレート内の要素にバインドされたプロパティです。 ' <スパンnglLookupLabel>クイック検索アカウント ' –

+0

厥それは' @output()のルックアップ=新しい持つEventEmitter() '' '内を作成するために、角度で、通常は優れている理由は、バインドそれは '

答えて

2

@swekosによってGitterで回答しました。

constructor(elementRef:ElementRef, private _quickAddService:QuickAddService) { 
    this.visible = true; 

    this.lookup = this.lookup.bind(this); 
} 
+0

うん、私の疑惑だった:) –

+0

しかし、迅速な応答をありがとう!それの上に:) –

+0

あなたは自分の答えを受け入れたものとしてマークできますか? – bekos

0

この;-)

あなたは型チェックを失うことになるので、それが活字体でbind方法を使用するのではなく、あなたのルックアップメソッドをラップするために、おそらく良いでしょうについてほんの少しのコメント:コンポーネントのコンストラクタに結合追加する必要があります。このような

何か: `lookup`から呼び出された場合は

関連する問題