首页 文章

Angular的ngOnInit和通过Observable返回的记录时间

提问于
浏览
1

我正在使用一个observable跟踪我的Angular 2应用程序中的一系列记录 .

因为这个可观察的结果存储在“记录”中,所以我使用“记录”迭代并使用* ngFor =“记录记录”打印到我的视图 . 这一切都按预期工作 .

但是,我想弄清楚为什么如果我有一个单独的函数,控制台记录记录数组的长度,我得到一个“0”返回 .

现在我正在Angular的ngOnInit生命周期钩子中做所有这些 . 所以它看起来像这样:

ngOnInit() {
    this.clientService.getAllClients()
        .subscribe(resRecordsData => this.records = resRecordsData,
        responseRecordsError => this.errorMsg = responseRecordsError);

    this.isActive();
}

在OnInit下面,我正在为“isActive”设置我的方法,如下所示:

isActive() {
    console.log('The total number of active records is ' + this.records.length);
}

我猜测问题是在OnInit期间console.log时“记录”不可用 . 一旦“记录”被返回,我可以做些什么来获得数组的实际长度?

1 回答

  • 2

    如果要访问 .subscribe() 的success参数中的数据,仍然可以使用匿名函数,只需要修改它的编写方式:

    ngOnInit() {
        this.clientService.getAllClients()
            .subscribe(resRecordsData => { // note the curly braces
                this.records = resRecordsData;
                this.isActive();
            },
            responseRecordsError => this.errorMsg = responseRecordsError);
    }
    

    添加花括号允许多行匿名方法 .

相关问题