Estoy tratando de poner la ruta relativa a una de mis imágenes en mi carpeta de activos en una etiqueta src de imagen en mi aplicación Angular2. Establecí una variable en mi componente en 'fullImagePath' y la usé en mi plantilla. He probado muchos caminos posibles diferentes, pero parece que no puedo mejorar mi imagen. ¿Hay alguna ruta especial en Angular2 que siempre sea relativa a una carpeta estática como en Django?
Componente
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-hero',
templateUrl: './hero.component.html',
styleUrls: ['./hero.component.css']
})
export class HeroComponent implements OnInit {
fullImagePath: string;
constructor() {
this.fullImagePath = '../../assets/images/therealdealportfoliohero.jpg'
}
ngOnInit() {
}
}
También puse la imagen en la misma carpeta que este componente, por lo que, dado que la plantilla y css en la misma carpeta funcionan, no estoy seguro de por qué una ruta relativa similar a la imagen no funciona. Este es el mismo componente con la imagen en la misma carpeta.
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-hero',
templateUrl: './hero.component.html',
styleUrls: ['./hero.component.css']
})
export class HeroComponent implements OnInit {
fullImagePath: string;
constructor() {
this.fullImagePath = './therealdealportfoliohero.jpg'
}
ngOnInit() {
}
}
html
<div class="row">
<div class="col-xs-12">
<img [src]="fullImagePath">
</div>
</div>
árbol de aplicaciones * Dejé fuera la carpeta de módulos de nodo para ahorrar espacio
├── README.md
├── angular-cli.json
├── e2e
│ ├── app.e2e-spec.ts
│ ├── app.po.ts
│ └── tsconfig.json
├── karma.conf.js
├── package.json
├── protractor.conf.js
├── src
│ ├── app
│ │ ├── app.component.css
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── hero
│ │ │ ├── hero.component.css
│ │ │ ├── hero.component.html
│ │ │ ├── hero.component.spec.ts
│ │ │ ├── hero.component.ts
│ │ │ └── portheropng.png
│ │ ├── index.ts
│ │ └── shared
│ │ └── index.ts
│ ├── assets
│ │ └── images
│ │ └── therealdealportfoliohero.jpg
│ ├── environments
│ │ ├── environment.dev.ts
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.css
│ ├── test.ts
│ ├── tsconfig.json
│ └── typings.d.ts
└── tslint.json
this.fullImagePath = '/assets/images/therealdealportfoliohero.jpg'
)?Respuestas:
Angular solo apunta a la
src/assets
carpeta, nada más es público para acceder a través de la URL, por lo que debe usar la ruta completathis.fullImagePath = '/assets/images/therealdealportfoliohero.jpg'
O
this.fullImagePath = 'assets/images/therealdealportfoliohero.jpg'
Esto solo funcionará si la etiqueta href base está configurada con
/
También puede agregar otras carpetas para los datos
angular/cli
. Todo lo que necesitas modificar esangular-cli.json
"assets": [ "assets", "img", "favicon.ico", ".htaccess" ]
Nota en la edición: el comando Dist intentará encontrar todos los archivos adjuntos de los activos, por lo que también es importante mantener las imágenes y los archivos a los que desee acceder a través de la URL dentro de los activos, como los archivos de datos json simulados también deben estar en los activos.
fuente
.angular-cli.json
archivo. Consulte la respuesta de @ michal-ambrož para obtener más información.Si no le gusta la carpeta de activos, puede editar
.angular-cli.json
y agregar otras carpetas que necesite."assets": [ "assets", "img", "favicon.ico" ]
fuente
"assets": [ "assets", "assets/images", "favicon.ico" ],
todavía no funciona?Agregue su ruta de imagen como
fullPathname='assets/images/therealdealportfoliohero.jpg'
en su constructor. Definitivamente funcionará.fuente
Estoy usando el proyecto de plantilla angular Asp.Net Core con un frontal y un paquete web de Angular 4. Tuve que usar '/ dist / assets / images /' delante del nombre de la imagen y almacenar la imagen en el directorio assets / images en el directorio dist. p.ej:
<img class="img-responsive" src="/dist/assets/images/UnitBadge.jpg">
fuente
Simplemente coloque sus imágenes en la carpeta de activos y refiéralas en sus
html
páginas ots
archivos con ese enlace.fuente
En angular, solo se solicita una página al servidor, que es index.html. Y index.html y la carpeta de activos están en el mismo directorio. al poner una imagen en cualquier componente, le da un valor src como
assets\image.png
. Esto funcionará bien porque el navegador hará una solicitud al servidor para esa imagen y el paquete web podrá servir esa imagen.fuente