angular - 使用 *ngFor 时打印相同的值
问题描述
我试图在迭代时获得每个项目的距离。
在下面的代码中,我得到了距离(onResponse)="getDistance($event)"
<div *ngFor="let routes of places[0].routes" class="todo-thumbnail-area">
<agm-map [zoom]="1">
<agm-direction [origin]="routes.origin" [destination]="routes.destination" (onResponse)="getDistance($event)">
</agm-direction>
</agm-map>
<div class="todo-price">One Way Trip Cost - {{ this.routeTotalDistance }}</div>
</div>
在 Component.ts
getDistance (event) {
this.routeTotalDistance = event.routes[0].legs[0].distance.text;
}
所以在控制台中,如果我打印,routeTotalDistance
我会看到每次迭代的不同值,但最后我看到所有项目的值相同。
我认为在最后一次迭代后routeTotalDistance
设置为最后一次迭代值。
我该如何解决这个逻辑问题?请指导。
解决方案
我认为在最后一次迭代之后 routeTotalDistance 设置为最后一次迭代值。
getDistance
你是对的:每次调用routeTotalDistance
变量时都会被覆盖。你可以做的是制作routeTotalDistance
一个数组:
<div *ngFor="let routes of places[0].routes; let i = index" class="todo-thumbnail-area">
<agm-map [zoom]="1">
<agm-direction [origin]="routes.origin" [destination]="routes.destination" (onResponse)="getDistance($event, i)">
</agm-direction>
</agm-map>
<div class="todo-price">One Way Trip Cost - {{ this.routeTotalDistances[i] }}</div>
routeTotalDistances: string[] = [];
...
getDistance (event, i) {
this.routeTotalDistances[i] = event.routes[0].legs[0].distance.text;
}
推荐阅读
- python - 如何更好地实现用户操作历史?
- python - Matplotlib 条形图 - 类似于堆叠的叠加条形图
- spring-boot - 会话超时后提交值时如何处理表单值?
- css - Chrome 以 0 的净旋转使文本模糊,但我无法将其复制到环境之外
- awk - 如何使用 awk 解决日期过滤器的问题
- database - 连接sequoiadb时出错(error: -15)
- swift - 如何在通过 Firebase (Swift) 创建用户之前检查电子邮件是否已在使用以及电子邮件格式是否错误
- django - Django Rest Auth - 社交视图的自定义注册逻辑
- java - 从另一个工具发布的 tcp 套接字读取数据
- c# - 如何将请求有效负载映射到asp.net核心中的元组