Загрузка значков из папки активов на странице в угловом проекте с ошибкой 429

В моем угловом проекте в папке с ресурсами у меня есть несколько значков svg. Мне нужно показать эти значки в раскрывающемся списке рядом с каждым элементом. Вот мой код для отображения значков:

constructor(        
        private matIconRegistry: MatIconRegistry,
        private domSanitizer: DomSanitizer      
    ) {
        
        this.registerIcon();
    }
    

registerIcon() {
        this.matIconRegistry.addSvgIcon("1", this.domSanitizer.bypassSecurityTrustResourceUrl("assets/icons/text.svg"));
        this.matIconRegistry.addSvgIcon("2", this.domSanitizer.bypassSecurityTrustResourceUrl("assets/icons/text.svg"));
        this.matIconRegistry.addSvgIcon("4", this.domSanitizer.bypassSecurityTrustResourceUrl("assets/icons/select.svg"));
        this.matIconRegistry.addSvgIcon("5", this.domSanitizer.bypassSecurityTrustResourceUrl("assets/icons/radio.svg"));
        this.matIconRegistry.addSvgIcon("6", this.domSanitizer.bypassSecurityTrustResourceUrl("assets/icons/checkbox.svg"));
        this.matIconRegistry.addSvgIcon("7", this.domSanitizer.bypassSecurityTrustResourceUrl("assets/icons/date.svg"));        
    }   

HTML-код:

<mat-form-field>
    <mat-label>Field Type</mat-label>
    <mat-select [(ngModel)] = "field.fieldType" [ngModelOptions] = "{standalone: true}">
        <mat-select-trigger>
            <mat-icon svgIcon = "{{field.fieldType}}"></mat-icon>
            &nbsp;{{selectedFieldName}}
        </mat-select-trigger>
        <mat-option *ngFor = "let item of allFieldTypes" [value] = "item.value">
            <mat-icon class = "material-icons" svgIcon = "{{item.value}}"></mat-icon>
            {{item.viewValue}}
        </mat-option>
    </mat-select>
</mat-form-field>

При запуске проекта в моей локальной среде он работает нормально, и я вижу значки в раскрывающемся списке. Но когда я развертываю код в облаке AWS, код не работает, и я вижу ошибку 429 для каждого значка.

Может ли кто-нибудь сказать мне, как решить проблему?

Тестирование функциональных 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
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

у вас, похоже, неправильная конфигурация для этой службы, вот сервис обновлений а вот структура папок структура папок

и вывод здесь выход


import { Injectable } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { MatIconRegistry } from '@angular/material/icon';

@Injectable({
  providedIn: 'root'
})
export class IconService {

  constructor(
    private _iconRegistry: MatIconRegistry,
    private _sanitizer: DomSanitizer
  ) {}
  public registerIcons(icons: Array<string>): void {
    icons.forEach((icon) => {

      this._iconRegistry.addSvgIcon(
        icon,
        this._sanitizer.bypassSecurityTrustResourceUrl(
          `assets/icons/${icon}.svg`
        )
      );
    });
  }
}

для app.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { IconService } from './services/icon.service';
import { MatIconModule } from '@angular/material/icon';
import { HttpClientModule } from '@angular/common/http';
import { MatSelectModule } from '@angular/material/select';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    MatIconModule,
    BrowserAnimationsModule,
    HttpClientModule,
    FormsModule,
    MatSelectModule,
    ReactiveFormsModule
  ],
  providers: [IconService],
  bootstrap: [AppComponent]
})
export class AppModule { }


ДЛЯ app.component.ts

import { Component, OnInit } from '@angular/core';
import { IconService } from './services/icon.service';

export class AppComponent implements OnInit {
  title = 'app-icons';
  icon: string = 'soc-icon';

  allFieldType=[];

  field:any

  constructor(private _iconService: IconService) {
    this.field = {
      value: this.icon,
      viewValue: 'Text',
    };
    this.allFieldTypes = [
      { value: this.icon, viewValue: 'Text' },
      { value: this.icon, viewValue: 'Number' },
      { value: this.icon, viewValue: 'Date' },
     
    ];
  }
  ngOnInit(): void {
    this._iconService.registerIcons([this.icon]);
  }

для app.compnent.html


  <h1>hello SVG icon</h1>

  <div>
    <mat-form-field>
      <mat-label>Select a field type</mat-label>
      <mat-select [(ngModel)] = "field">
        <mat-select-trigger>
          <mat-icon svgIcon = "{{field.value}}"></mat-icon>
          &nbsp;{{field.viewValue}}
        </mat-select-trigger>
        <mat-option *ngFor = "let item of allFieldTypes" [value] = "item">
          <mat-icon class = "material-icons" svgIcon = "{{item.value}}"></mat-icon>
          {{item.viewValue}}
        </mat-option>
      </mat-select>
    </mat-form-field>
  </div>

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