196 votes

Comment charger une image (et d'autres ressources) dans un projet Angular?

Je suis assez nouveau en Angular donc je ne suis pas sûr de la meilleure pratique pour faire cela.

J'ai utilisé angular-cli et ng new some-project pour générer une nouvelle application.

Il a créé un dossier "images" dans le dossier "assets", donc maintenant mon dossier d'images est src/assets/images

Dans app.component.html (qui est la racine de mon application), j'ai mis

Lorsque je fais ng serve pour visualiser mon application web, l'image ne s'affiche pas.

Quelle est la meilleure pratique pour charger des images dans une application Angular?

MODIFIER: Voir la réponse ci-dessous. Le nom de mon image réel contenait des espaces, ce qu'Angular n'aimait pas. Lorsque j'ai supprimé les espaces dans le nom du fichier, l'image s'est affichée correctement.

2 votes

Oui vous avez raison, vous avez donné la syntaxe de chemin correcte à partir du dossier des ressources, il pourrait y avoir un problème avec le nom qui ne correspond pas, vérifiez si l'image est présente ou non

1 votes

Certainement pas un nom incohérent, j'ai fini par créer un dossier public en dehors de src et afficher l'image avec ![](../../public/images/myimage.png)

0 votes

Réparé. Mon nom de fichier image réel contenait des espaces, et pour une raison quelconque Angular n'aimait pas ça. Lorsque j'ai supprimé les espaces de mon nom de fichier, assets/images/myimage.png a fonctionné.

149voto

mruanova Points 1377

Dans mon projet, j'utilise la syntaxe suivante dans mon app.component.html :

ou

utilisez [src] en tant qu'expression de modèle lorsque vous liez une propriété en utilisant l'interpolation :

est identique à :

Source : how to bind img src in angular 2 in ngFor?

1 votes

Est-ce que votre fichier app.component.html et le dossier assets sont au même niveau?

0 votes

Non, la structure des dossiers est créée automatiquement et vous devez avoir les mêmes dossiers que moi : project-folder\src\assests\ et project-folder\app\app.component.html si cela vous aide, veuillez voter.

105voto

user3183717 Points 1027

J'ai corrigé cela. Le nom de mon fichier image actuel contenait des espaces, et pour une raison quelconque Angular n'aimait pas ça. Lorsque j'ai supprimé les espaces de mon nom de fichier, assets/images/myimage.png a fonctionné.

0 votes

J'avais un caractère spécial '^' dans le nom de fichier et j'avais le même problème, après l'avoir renomé, cela a fonctionné, donc je crois que Angular n'aime pas les caractères spéciaux et les espaces dans les noms de fichier

39voto

jmuhire Points 379

Angular-cli inclut le dossier assets dans les options de construction par défaut. J'ai rencontré ce problème lorsque le nom de mes images contenait des espaces ou des tirets. Par exemple :

  • 'mon-nom-image.png' devrait être 'monNomImage.png'
  • 'mon nom image.png' devrait être 'monNomImage.png'

Si vous placez l'image dans le dossier assets/img, alors cette ligne de code devrait fonctionner dans vos modèles :

Si le problème persiste, vérifiez simplement si votre fichier de configuration Angular-cli contient bien votre dossier assets dans les options de construction.

1 votes

[alt] n'est pas nécessaire pour les chaînes de caractères, [] est utilisé pour la liaison de données.

21voto

Bhuwan Maharjan Points 146

Étant spécifique à Angular2 à 5, nous pouvons lier le chemin de l'image en utilisant la liaison de propriété comme ci-dessous. Le chemin de l'image est encadré par des guillemets simples.

Exemple d'échantillon

1 votes

Quelle est la différence entre src="assets/img/klogo.png" et [src]="'assets/img/klogo.png'" ?

1 votes

1 votes

Donc en gros, nous utilisons [src] pour lier au modèle si nous voulons pouvoir changer la src en utilisant cette méthode.

10voto

chrispy Points 2550

Normalement, "app" est la racine de votre application -- avez-vous essayé app / chemin / vers / assets / img.png ?

0 votes

Angular-cli place les dossiers app et assets séparément sous le dossier src. (désolé je ne suis pas sûr de la façon dont je suis censé formater la structure et les noms de dossiers)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X