Ошибка NG8002: невозможно привязать к «ngSrc», поскольку это неизвестное свойство «img»

Я попытался использовать директиву NgOptimizedImage. Я использую Angular 18. Моя проблема в том, что изображение не отображается, всегда возникает следующая ошибка

X [ERROR] NG8002: Can't bind to 'ngSrc' since it isn't a known property of 'img'. [plugin angular-compiler]

В родительском модуле я импортировал NgOptimizedImage. Вот мой код:

<div class = "awards-content">
        <div class = "awards-screen">
            <div  class = "align-awards text-primary">
                <h4 class = "label-title">Awards...</h4>
            </div>
            <div>
                <p>
                <span class = "text-primary">
                    <a class = "spacer"
                      href = "https://github.com/lkovari/LKovariHome/blob/master/src/app/layout-pages/awards/awards.component.ts">
                      <img [src] = "githubLogoPath" width = "16" height = "16" alt = "githubLogoPath">
                    </a>Technical notes:</span> under CONSTRUCTION, will use ngOptimizedImage directive</p>
            </div>
            <div class = "image-content">
                <ul>
                    @for (imageDescriptor of imageDescriptors; track imageDescriptor.id) {
                        <li class = "text-primary">  {{ imageDescriptor.alt }}
                            <img
                                class = "img-responsive"
                                [ngSrc] = "imageDescriptor.fileName" 
                                [width] = "imageDescriptor.width"
                                [height] = "imageDescriptor.height"
                                [alt] = "imageDescriptor.alt"
                                ngSrcset = "200w, 400w, 600w, 800w, 1000w, 1200w, 1600w, 2000w, 3000w">
                        </li>            
                    }
                </ul>
            </div>            
        </div>
</div>

ТС:

import { Component, OnInit } from '@angular/core';
import { ImageDescriptor } from './models/image-descriptor.interface';

@Component({
  selector: 'app-awards',
  templateUrl: './awards.component.html',
  styleUrls: ['./awards.component.scss']
})
export class AwardsComponent implements OnInit {
  githubLogoPath: string;
  public years: number;
  imageDescriptors: ImageDescriptor[] = [
    { id : 1, fileName: 'assets/images/2022Q2LeaderboardWinnerGT50.png', width: 434, height: 640, alt: 'Leaderboard winner Q2 of 2022' },
    { id : 2, fileName: 'assets/images/2021Q4CaughtAtYourBest.png', width: 791, height: 916, alt: 'Caught at your best Q4 2021' },
    { id : 3, fileName: 'assets/images/2018CertificateOfRecognition20years.png', width: 800, height: 583, alt: '20 years of service' },
    { id : 4, fileName: 'assets/images/2016Q4CaughtAtYourBest.png', width: 1280, height: 983, alt: 'Caught at your best Q4 2016' },
    { id : 5, fileName: 'assets/images/2015Q4CaughtAtYourBest.png', width: 1280, height: 913, alt: 'Caught at your best Q4 2015' },
    { id : 6, fileName: 'assets/images/icagile-cert2014.png', width: 800, height: 583, alt: 'IcAgile course Certificate' },
    { id : 7, fileName: 'assets/images/AmkaiStockOptions1050A.png', width: 1199, height: 913, alt: 'Stock Option Series A' }
  ]

  constructor() { }

  ngOnInit() {
    const date = new Date();
    this.years = date.getFullYear();
    this.githubLogoPath = 'assets/logos/GitHub-Mark-32px.png';
  }

}

Если у кого-то есть идеи, я буду признателен.

Можете ли вы предоставить код упомянутого родительского модуля в вопросе?

Yong Shun 12.06.2024 01:55
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
90
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Перейдите в модуль, где вы добавили AwardsComponent в массив объявлений. Убедитесь, что вы импортировали NgOptimizedImage в массив импорта того же модуля, где он объявлен, это избавит от ошибки!

...
@NgModule({
  declarations: [
  ...
  AwardsComponent,
  ...
  ],
  imports: [
  ...
  NgOptimizedImage,
  ...
  ],
})
export class SomeModule {}

Мурали, Это был первый шаг, что я сделал. импортируйте NgOptimizedImage в родительский модуль. Несмотря на то, что когда я использую [ngSrc]=, я получаю ошибку, если я использую ngSrc=, ошибки нет, но изображение вообще не отображается. Пути к изображениям также верны.

L. Kvri 13.06.2024 08:03

@L.Kvri, тогда, пожалуйста, поделитесь стекблицем с возникшей проблемой или репозиторием GitHub, вы даже не поделились родительским модулем, как проверить проблему?

Naren Murali 13.06.2024 08:49

Я понял, в чем проблема. Я использовал неавтономный компонент. Так что с автономным компонентом все работает хорошо.

L. Kvri 15.06.2024 23:15

Я понял, в чем проблема. Я превращаю свой компонент в автономный.

Ответ принят как подходящий

Я понял, в чем проблема. Я использовал неавтономный компонент. Так что с автономным компонентом все работает хорошо.

Другие вопросы по теме