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

标签 javascript angular typescript

我正在使用一个可观察对象来跟踪我的 Angular 2 应用程序中的一组记录。

因为这个 observable 的结果存储在“records”中,我使用“records”迭代并使用 *ngFor="let record of records"打印到我的 View 。这一切都按预期工作。

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

现在我正在 Angular 的 ngOnInit 生命周期 Hook 中完成所有这些工作。所以它看起来像这样:

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 时不可用。一旦返回“records”,我可以做些什么来获取数组的实际长度?

最佳答案

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

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

添加大括号允许多行匿名方法。

关于javascript - Angular 的 ngOnInit 和通过 Observable 返回记录的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42840607/

相关文章:

javascript - The Mark of the Web 是否始终确保 IE 运行本地 HTML 文件

javascript - 为什么点运算符无法访问数组元素?

javascript - Ckeditor 对话框中的嵌套选项卡

javascript - Angular 2选择不绑定(bind)

javascript - 箭头函数返回参数作为对象的属性

angular - 为什么大多数 Angular UI 组件不使用对象来配置输入?

javascript - 更改单页 Angular 应用程序中的 View

angular - 使用 Angular http.get 重试失败后抛出错误

angular - 为什么我从订阅者引用自身时收到 "Cannot access '变量“初始化之前”错误?

typescript - 有没有办法检查字符串是否包含在 TypeScript 的联合类型中?