
angular 项目中通过 *ngfor 渲染图片时空白无显示,通常是因图片路径包含多余的 `src/` 前缀导致资源加载失败;正确路径应以 `assets/` 开头,由 angular 的静态资源服务直接解析。
在 Angular 应用中,src/assets/ 目录下的文件(如图片、字体、JSON 等)会被构建工具自动复制到最终输出目录(如 dist/your-app/)的根级 assets/ 文件夹下。因此,在模板中引用这些资源时,路径必须以 assets/ 开头,且不能包含 src/ —— 因为浏览器运行时根本看不到 src/ 目录,它仅存在于开发源码中。
你当前的代码中,BookService.getAll() 返回的是带 src/ 前缀的路径:
return [ 'src/assets/images/books/book-1.jpg', // ... ];
这会导致浏览器尝试请求类似 http://localhost:4200/src/assets/images/books/book-1.jpg 的 URL,而该路径在生产环境或开发服务器中并不存在,最终返回 404,图片自然无法显示。
✅ 正确做法是:移除 src/,只保留 assets/ 及其后续路径:
// BookService.ts
getAll(): string[] {
return [
'assets/images/books/book-1.jpg',
'assets/images/books/book-2.jpg',
'assets/images/books/book-3.jpg'
];
}同时,模板中建议使用 Angular 推荐的属性绑定语法 [src] 替代插值 {{read}},既更安全(避免 XSS 风险),也支持延迟加载与路径校验:
⚠️ 注意事项:
- 确保图片真实存在于 src/assets/images/books/ 目录下;
- 路径区分大小写(尤其在 Linux/macOS 构建环境中);
- 若使用 Angular CLI,默认已配置 assets 为静态资源目录,无需额外配置;检查 angular.json 中的 "assets" 数组是否包含 "src/assets";
- 开发时可通过浏览器开发者工具的 Network 标签页查看图片请求是否 404,快速定位路径问题。
总结:Angular 模板中的静态资源路径是相对于部署后站点根目录的,而非源码目录。牢记——写 assets/...,不写 src/assets/...,即可解决 90% 的图片渲染空白问题。










