Заставьте <img>использовать кэшированный результат в нескольких экземплярах компонента Angular. - PullRequest
0 голосов
/ 26 июня 2019

У меня есть угловой компонент, называемый папка-браузер, который служит браузером папок.Он отображает папки в вертикальном списке, а когда папка открывается, он отображает папки в этой папке, если они есть:

enter image description here

ВотHTML код для этого:

<div *ngFor="let element of folders">
    <div class="folder" (click)="selectFolder(element)" [ngClass]="{'selected': checkSelected(element)}">
        <div class="chevron-container">
            <img class="chevron-icon" src="{{getChevronIcon(element)}}">
        </div>
        <img class="folder-icon" src="{{folderIcon}}" />
        <span class="folder-name">{{element.name}}</span>
    </div>
    <div class="sub-folders" *ngIf="element.expanded">
        <folder-browser [folders]="element.children"></folder-browser>
    </div>
</div>

Мой вопрос о двух <img> элементах (есть три различных SVG - элемент img шеврона использует либо нижний, либо правый шеврон).Как видите, эти элементы img используются много раз;они не только находятся внутри *ngFor div, этот компонент браузера папок используется рекурсивно для отображения подпапок.

Src этих элементов img указывает на CDN.Глядя на сетевую вкладку инструментов разработчика Chrome, я вижу, что каждый инициализируемый компонент браузера папок выполняет три вызова CDN для трех типов изображений.Кроме того, каждый раз, когда папка открывается и закрывается (что переключает шеврон между лицевой стороной вниз и вправо), из CDN загружаются нижний и правый шевронные SVG.

Поскольку используются только три различных SVG,Я хотел бы, чтобы браузер загружал каждый из них только один раз, а затем использовал кэшированное изображение для каждого последующего элемента img.Похоже, это происходит в некоторой степени, поскольку при инициализации компонента выполняется только один запрос для каждого типа изображения, в отличие от того, сколько папок находится в * ngIf.Однако при инициализации нового экземпляра того же компонента было бы хорошо, если бы он использовал кэшированные изображения, поскольку они одинаковы.

Есть ли встроенный способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...