【发布时间】:2026-01-25 20:35:01
【问题描述】:
我正在从数据库中获取一些数据并使用 ngFor 循环显示它。
HTML:
<div
style="background:black; color:aliceblue;"
class="col-md-8 col-md-offset-2 text-center"
[routerLink]="['todo']">
<h3
*ngFor="let todo of todos"
>{{todo.todoHeadline}}</h3>
</div>
TS:
todos: Todo[];
constructor(private todoService: TodoService) { }
ngOnInit() {
this.todoService.getTodos()
.subscribe(
(todos: Todo[]) => {
this.todos = todos;
}
);
}
以及负责获取数据的服务:
getTodos() {
return this.http.get('http://localhost:3000/todo')
.map((response: Response) => {
const todos = response.json().obj;
let transformedTodos: Todo[] = [];
for (let todo of todos) {
transformedTodos.push(new Todo(
todo.todoHeadline,
todo.todoDescription
));
}
this.todos = transformedTodos;
return transformedTodos;
})
.catch((error: Response) => {
return Observable.throw(error.json());
});
}
所以我在数据库中有 8 个带有属性标题和描述的待办事项。现在 ngFor 打印 8 次 h3 并且在 h3 内打印 8 次,因此它显示 todoHeadline 64 次。我该如何解决?
【问题讨论】:
-
这是一个奇怪的行为,考虑到 h3 标签只包含插值表达式。您是否在控制台中收到任何错误/警告?
-
@Jota.Toledo 没有错误或警告
-
您能否添加您的 HTTP 请求的响应以及有关您本地环境的更多信息(如果您使用的是 angular-cli,则为 ng -v)
-
我发现了一个错误,这是我的错误,我不小心在包装 div 上放了相同的 ngFor
-
大声笑,下次将完整的模板添加到您的问题中