javascript - Angular无限循环调用函数

标签 javascript angular

在一些 Angular 项目中,我遇到了同样的问题,每当我尝试在我的 HTML 中调用一个函数(从 api 中检索一些值)时,它都会触发一个无限循环。在下面的示例中,触发循环的是 getUser()。

HTML

<ul>
    <li *ngFor="let order of orders">
        {{ getUser(order.orderNr).emailAddress }}
    </li>
</ul>

组件

private getOrdersList() {

    this.orderService.getAll().subscribe(
        orders => {
            this.orders = orders;
        }
    );
}

public getUser(orderNr: number) {
    return this.orderService.getUser(orderNr);
}

服务

public getAll(): Observable<Order[]> {
    return this.api.get<Order[]>('orders');
}

public getUser(orderNr: number) {
    return this.api.get<void>('orders/'+orderNr);
}

我认为这与 Angular 处理数据的方式有关,但我对 Angular 还很陌生,不确定如何在不引起循环的情况下检索这些数据。也许更有经验的人可以提供一些帮助?

最佳答案

这不是无限循环,它只是 Angulars 变化检测。

在开发过程中,每个变更检测运行也会在第 2 轮之后进行。 任何异步调用完成(事件处理程序、超时...)时都会运行更改检测,因此可能会经常发生。

通常应避免绑定(bind)到 View 中的函数,而是将结果分配给一个字段并绑定(bind)到该字段。 Angular 非常有效地检查字段值是否已更改。

关于javascript - Angular无限循环调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241618/

相关文章:

javascript - 如何在javascript中解析字符串并捕获最后一个<br>之前的所有文本

angular - 如何传递通用类型并在 Angular 2 组件中创建此类型的实例

javascript - Renderer2、ViewChild 和 ElementRef。为什么我们需要/在 Angular 中使用这些东西?

json - IONIC 3 CORS 问题

javascript - 小 Action 的 redux 状态

javascript - 预加载下一张和上一张幻灯片

jquery - Angular/Bootstrap - 导航栏显示不正确

Angular 9 - 找不到 <component> 的组件工厂

javascript - 如何在 VueJs 中限制我的迭代

javascript - 如何创建无边框窗口?