
angular 项目中通过 *ngfor 渲染图片时空白无显示,通常是因图片路径包含冗余的 `src/` 前缀导致资源加载失败;正确做法是使用相对于 `src` 目录的相对路径(如 `assets/images/...`),由 angular 开发服务器自动映射。
在 Angular 应用中,静态资源(如图片、字体、JSON 文件)应统一放在 src/assets/ 目录下,而 Angular CLI 的开发服务器(ng serve)会自动将 /assets/ 映射到 src/assets/。这意味着你在模板中引用图片时,路径必须以 assets/ 开头,且不能包含 src/。
你当前的代码存在关键路径错误:
// ❌ 错误:路径含 'src/',浏览器实际请求 http://localhost:4200/src/assets/...(404) return [ 'src/assets/images/books/book-1.jpg', // ... ];
该路径会被拼接到应用根 URL 后,例如 http://localhost:4200/src/assets/... —— 而开发服务器不提供 src/ 子目录的公开访问,因此所有图片请求均返回 404, 标签自然为空白。
✅ 正确写法(移除 src/,仅保留 assets/ 及其子路径):
// ✅ 正确:路径以 'assets/' 开头,匹配 Angular 默认静态资源服务规则
getAll(): string[] {
return [
'assets/images/books/book-1.jpg',
'assets/images/books/book-2.jpg',
'assets/images/books/book-3.jpg'
];
}同时,模板中建议使用 Angular 推荐的属性绑定语法(而非插值 {{}})来绑定 src,提升安全性与可维护性:
? 验证小技巧:打开浏览器开发者工具 → Network 标签页 → 刷新页面 → 查看 img 请求的 Status 是否为 404;若 URL 包含 src/assets/,即确认路径错误。
? 额外注意事项:
- 确保图片真实存在于 src/assets/images/books/ 目录下(大小写敏感);
- 不要使用绝对路径如 /assets/...(除非你明确配置了 baseHref,且部署路径匹配);
- 类型建议使用 string[] 而非 String[](TypeScript 中原始类型 string 更规范);
- 如需错误兜底,可结合 onerror 事件或 ngIf 配合 HttpClient 预检路径(进阶场景)。
修正路径后保存并刷新,图片即可正常渲染。这是 Angular 静态资源服务机制的基础约定,掌握它能避免大量资源加载类问题。










