В моем угловом проекте в папке с ресурсами у меня есть несколько значков 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>
{{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 для каждого значка.
Может ли кто-нибудь сказать мне, как решить проблему?





у вас, похоже, неправильная конфигурация для этой службы, вот сервис обновлений а вот структура папок структура папок
и вывод здесь выход
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>
{{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>