0

状況:

私はAngular2を学んでいます。サービスへの呼び出しをデバッグしたかった。

ビューでわかるように、サービスは適切に呼び出されています。

また、結果を保持する変数のコンテンツにログを記録したいのですが、私が例外として機能していません。

サービス:

export class ListService 
{
    getList() 
    {
        return Promise.resolve(LIST);
    }
}

THE CALL (リストコンポーネントから):

export class ListComponent implements OnInit
{
    list: Item[];

    constructor(
        private _router: Router, 
        private _listService: ListService
    ) { }


    getList() 
    {
        this._listService.getList().then(list => this.list = list);
    }

    ngOnInit() 
    {
        this.getList();
    }

}

ログ試行 1:

listアイテムのリストを含む変数です。ビューでは、コンテンツが適切に表示されます。したがって、ログに記録してその内容を確認することを期待しています。

getList() 
{
    this._listService.getList().then(list => this.list = list);
    console.log(list)
}

しかし、代わりにこのエラーが発生した場合:

EXCEPTION: ReferenceError: list is not defined in [null]

ログ試行 2:

正しい構文を取得しようとしています:

getList() 
{
    this._listService.getList().then(list => this.list = list);
    console.log(this.list)
}

現在、エラーはありません。しかし、コンソールには表示されますundefined。しかし、サービスはすでに呼び出されています。したがって、コンテンツが含まれている必要があります

質問:

私はAngular2を使用していることを考慮して - Ecmascript 2016

サービスの呼び出しをログに記録するための適切な構文は何ですか?

ありがとうございました!

4

1 に答える 1

2

実際this.listには、メソッドに登録されたコールバック内に設定されますthen。したがって、次のようなものを使用する必要があります。

getList() 
{
  this._listService.getList().then(list => {
    this.list = list;
    console.log(list);
    console.log(this.list);
  });
}

console.log(this.list);約束を正せば結果は出ないだろうから多分this.list成立しないだろう…

于 2016-03-15T12:35:17.383 に答える