AngularJs 2:如何调试服务调用? (es6语法)

时间:2016-03-15 12:33:29

标签: javascript angularjs angular ecmascript-6 angular2-services

情况:

我刚刚学习Angular2。我想调试对服务的调用。

正如我在视图中看到的那样,服务已被正确调用。

我还想记录保存结果的变量内容,但它不能正常工作,除了。

服务:

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

来电(来自列表组件):

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();
    }

}

LOG ATTEMPT 1:

list是包含项目列表的变量。在视图中它正确显示内容。所以我希望记录它并查看其内容。

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

但是当我得到这个错误时:

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

LOG ATTEMPT 2:

尝试获取正确的语法:

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

现在没有错误。但在控制台中显示undefined。 但该服务已经被调用。所以它应该包含内容

问题:

考虑到我正在使用Angular2 - Ecmascript 2016

记录服务调用的正确语法是什么?

谢谢!

1 个答案:

答案 0 :(得分: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可能无法设置......