Идентификатор способа узнать, не переполняют ли компоненты внутри контейнера.Если это действительно переполнение, id хотел бы получить индекс элемента, который вызывает переполнение.
Цель этой проблемы - добавить кнопку show more при ее переполнении и разбить объект на две части;предметы, которые подходят, и предметы, которые не подходят.
Компоненты создаются * ngFor.
Вот минимальный пример того, что происходит
<div class="my-container">
<div
class="item"
*ngFor="let item of items; let i = index; trackBy: trackById"
>
{{ item.val }}
</div>
<div>
.my-container {
overflow: hidden;
max-width: 100%;
display: flex;
}
Поскольку мой контейнер заполняется горизонтально с элементами,он может переполниться по горизонтали, если есть достаточно предметов.Я хотел бы сказать, переполняется ли он, и определить, какой элемент вызывает переполнение.
Вот моя попытка:
// this fn gets called in ngOnChanges
determineShowMore() {
const container = document.querySelector('.my-container') as HTMLElement;
const viewItems: any = container ? Array.from(viewsContainer.children) : [];
let totalWidth = 0;
viewItems.forEach((x: HTMLElement) => {
totalWidth += x.offsetWidth;
});
const isOverflow = totalWidth > viewsContainer.offsetWidth ? true : false;
// missing: determine which item causes the overflow
}
Не похоже, что это работает хорошо, возможно, потому, что это происходитпрежде чем HTML полностью отображается?Я не могу запустить этот fn на ngAfterViewInit()
, потому что мой items
может динамически меняться, и мне нужно, чтобы он запускался при каждом изменении.
Спасибо!