角度无限循环调用函数

时间:2018-01-13 16:05:20

标签: javascript angular

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

HTML

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

成分<​​/ P>

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很新,不确定如何在不引起循环的情况下检索这些数据。也许更有经验的人可以提供一些帮助?

1 个答案:

答案 0 :(得分:2)

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

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

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

相关问题