Як завантажити зображення (та інші активи) у Angular проект?


106

Я досить новачок у Angular, тому я не впевнений, що найкраща практика для цього.

Я використовував angular-cli і ng new some-projectдля створення нового додатка.

У ній створено папку "зображення" в папці "Активи", тому тепер папка моїх зображень є src/assets/images

В app.component.html(що є коренем моєї заявки), я кладу

<img class="img-responsive" src="assets/images/myimage.png">

Коли я ng serveпереглядаю свою веб-програму, зображення не відображається.

Яка найкраща практика для завантаження зображень у програму Angular?

РЕДАКТУЙТЕ: Дивіться відповідь нижче. Моє власне ім’я зображення використовувало пробіли, які Angular не любили. Коли я видалив пробіли в назві файлу, зображення відображається правильно.


1
так, ви маєте рацію, ви дали правильний синтаксис шляху від fodler, може виникнути проблема з невідповідністю вашого імені, перевірити, чи є зображення чи ні
Pardeep Jain

1
Очевидно, що це невідповідність імені, я закінчив створити publicпапку поза srcта відображати зображення із користувачем<img class="img-responsive" src="../../public/images/myimage.png">
user3183717

Виправлено це. У моєму фактичному імені файлу зображень було пробіли, і з будь-якої причини Angular цього не любив. Коли я видалив пробіли з імені файлу, assets/images/myimage.pngпрацював.
користувач3183717

1
good :) btw не потрібно створювати додаткову загальнодоступну папку в оновленому кліпі, вони вже мають однакові імена asstes.
Pardeep Jain

У мене є аналогічна проблема з файлами з іншими розширеннями (наприклад, .sgfя хочу розмістити ці файли та посилатися на них із програми, але, мабуть, просто помістити їх у assetsпапку недостатньо. Якісь ідеї?
bvdb

Відповіді:


72

Я полагодив це. У моєму фактичному імені файлу зображень було пробіли, і з будь-якої причини Angular цього не любив. Коли я видалив пробіли з імені файлу, assets/images/myimage.pngпрацював.


62

У своєму проекті я використовую такий синтаксис у своєму app.component.html:

<img src="/assets/img/1.jpg" alt="image">

або

<img src='http://mruanova.com/img/1.jpg' alt='image'>

використовувати [src] як вираз шаблону, коли ви прив'язуєте властивість за допомогою інтерполяції:

<img [src]="imagePath" />

те саме, що:

<img src={{imagePath}} />

Джерело: як зв’язати img src у кутовому 2 у ngFor?


1
чи ваша папка app.component.html та активи на одному рівні?
Халіл

Ні, структура папок створюється автоматично, і ви повинні мати ті ж папки, що й я: проект-папка \ src \ assests \ та папка проекту \ папка \ app \ app.component.html, якщо це допоможе, будь ласка, піднесіть заявку.
mruanova

26

Angular-cli містить папку активів у параметрах збірки за замовчуванням. У мене виникло це питання, коли назва моїх зображень мала пробіли чи тире. Наприклад :

  • 'my-image-name.png' має бути 'myImageName.png'
  • 'my image name.png' має бути 'myImageName.png'

Якщо ви помістите зображення в папку "активи / імг", то цей рядок коду повинен працювати у ваших шаблонах:

<img alt="My image name" src="./assets/img/myImageName.png">

Якщо проблему не вирішено, просто перевірте, чи є ваш конфігураційний файл Angular-cli та переконайтеся, що папка активів додана в параметри збірки.


1
[alt] не потрібен для рядків, [] - для прив'язки даних.
chris_r

14

Будучи специфічними для Angular2 до 5, ми можемо прив’язати шлях зображення, використовуючи прив'язку властивостей, як показано нижче. Шлях зображення вкладається єдиними лапками.

Приклад прикладу

<img [src]="'assets/img/klogo.png'" alt="image">


яка різниця між src = "активи / img / klogo.png" та [src] = "'активи / img / klogo.png'"?
gdbj


тому в основному ми використовуємо [src] для прив’язки до моделі, якщо хочемо змінити src за допомогою цього методу.
gdbj

Дякую mohit за відповідь на тему. @gdbj Я сподіваюся, що у вас вже були відрегульовані ваші плутанини.
Бхуван Махарджан

Хотілося б просто вказати майбутнім читачам шукати внутрішні цитати в першому коментарі gdbj. Їх складніше бачити у шрифті коментаря, ніж у відповіді вище, але їх відсутність може призвести до певної плутанини. (Може залежати від вашого веб-переглядача, не впевнені.)
SilithCrowe

7

Зазвичай "додаток" є коренем вашої програми - ви пробували app/path/to/assets/img.png?


кутові кліпи appі assetsпапки окремо під srcпапку. (вибачте, я не впевнений, як я повинен форматувати структуру папки та імена)
user3183717

5

1. Додайте цей компонент зверху в компоненті.

declare var require: any

2. додайте цей рядок у свій клас компонентів.

imgname= require("../images/imgname.png");
  1. додайте це "ім'я" в тег img src на html-сторінці.

    <img src={{imgname}} alt="">


це краще для дерев ієрархії файлів, які не є плоскими.
chris_r


-1

Це завжди залежить від того, де знаходиться ваш HTML-файл, який посилається на шлях статичного ресурсу (у цьому випадку зображення).

Приклад A:

src
|__assests
   |__images
      |__myimage.png
|__yourmodule
   |__yourpage.html

Як ви бачите, yourpage.html - одна папка від кореня (папка src), тому для повернення до кореня потрібна одна кількість ../, тоді ви можете перейти до зображення з кореня:

<img class="img-responsive" src="../assests/images/myimage.png">

Приклад B:

src
|__assests
   |__images
      |__myimage.png
|__yourmodule
   |__yoursubmodule
      |__yourpage.html

Тут вам потрібно перейти у дерево на дві папки:

<img class="img-responsive" src="../../assests/images/myimage.png">
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.