Angular 18.2.6版本中如何显示本地图片?
在Angular 18.2.6中显示本地图片的解决方案
问题描述
使用Angular 18.2.6版本(此前Stack Overflow相关线程不适用于该版本),在独立组件NavbarComponent中添加本地图片时无法显示。图片存储路径为/src/assets/images/logo.png,组件代码及编译后图片加载失败的情况如下:
NavbarComponent HTML代码
<mat-toolbar class="toolbar"> <a routerLink="/"> <img src="" alt="IPCC Logo"> </a> <a routerLink="/"> <span style="font-size: 20px">Inpatient Psychological Care Collaborative (IPCC)</span> </a> <div class="spacer"></div> @if (true) { <ul id="nav-items"> <li><a routerLink="/mission">Mission & Values</a></li> <li><a routerLink="/about">About Us</a></li> <li><a routerLink="/listserv">Listserv</a></li> </ul> } </mat-toolbar>
NavbarComponent TS代码
import { Component } from '@angular/core'; import { RouterModule } from '@angular/router'; import { MatToolbarModule } from '@angular/material/toolbar' @Component({ selector: 'app-navbar', standalone: true, imports: [ RouterModule, MatToolbarModule ], templateUrl: './navbar.component.html', styleUrl: './navbar.component.css' }) export class NavbarComponent { }
angular.json配置(更新#1)
{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "ipcc": { "projectType": "application", "schematics": {}, "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/ipcc", "index": "src/index.html", "browser": "src/main.ts", "polyfills": [ "zone.js" ], "tsConfig": "tsconfig.app.json", "assets": [ { "glob": "**/*", "input": "public" } ], "styles": [ "@angular/material/prebuilt-themes/azure-blue.css", "src/styles.css" ], "scripts": [] }, "configurations": { "production": { "budgets": [ { "type": "initial", "maximumWarning": "500kB", "maximumError": "1MB" }, { "type": "anyComponentStyle", "maximumWarning": "2kB", "maximumError": "4kB" } ], "outputHashing": "all" }, "development": { "optimization": false, "extractLicenses": false, "sourceMap": true } }, "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { "buildTarget": "ipcc:build:production" }, "development": { "buildTarget": "ipcc:build:development" } }, "defaultConfiguration": "development" }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n" }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "polyfills": [ "zone.js", "zone.js/testing" ], "tsConfig": "tsconfig.spec.json", "assets": [ { "glob": "**/*", "input": "public" } ], "styles": [ "@angular/material/prebuilt-themes/azure-blue.css", "src/styles.css" ], "scripts": [] } } } } } }
解决方案
问题根源在于Angular资源配置未包含src/assets目录,且图片路径未正确设置,按以下步骤修复:
1. 更新angular.json的资源配置
Angular 18默认仅将public目录作为资源目录,需手动添加src/assets,确保构建时该目录下的文件被复制到输出目录。
修改projects.ipcc.architect.build.options.assets数组:
"assets": [ { "glob": "**/*", "input": "public" }, { "glob": "**/*", "input": "src/assets", "output": "assets" } ]
同步更新test配置下的assets数组,保持配置一致。
2. 设置正确的图片路径
在NavbarComponent的HTML中,为img标签指定正确的相对路径:
<img src="/assets/images/logo.png" alt="IPCC Logo">
3. 重启开发服务器
修改angular.json后,重启Angular开发服务器,确保新配置生效。
完成以上操作后,本地图片即可正常显示。
内容的提问来源于stack exchange,提问作者Brigadeiro
相关产品推荐
相关产品推荐

