You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 18.2.6版本中如何显示本地图片?

在Angular 18.2.6中显示本地图片的解决方案

问题描述

使用Angular 18.2.6版本(此前Stack Overflow相关线程不适用于该版本),在独立组件NavbarComponent中添加本地图片时无法显示。图片存储路径为/src/assets/images/logo.png,组件代码及编译后图片加载失败的情况如下:

<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>
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:37:05