Решения:
(перед всеми решениями вы должны добавить переменную visible в ваш файл ts)
- Через удаление элементов из DOM:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li *ngIf="visible">Item 3</li>
<li *ngIf="visible">Item 4</li>
</ul>
- через динамический класс:
HTML:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li [class.some-hidden-class]="!visible">Item 3</li>
<li [class.some-hidden-class]="!visible">Item 4</li>
</ul>
(s) CSS:
.some-hidden-class{ display: none; }
- С помощью скрытой директивы:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li [hidden]="!visible">Item 3</li>
<li [hidden]="!visible">Item 4</li>
</ul>
На мой взгляд, решение 1. является лучшим, потому что если элементы скрыты, то в DOM вы не видите ничего внутри HTML, поэтому визуализированный HTML в 1-м решении будет выглядеть так:
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
Самый большой недостаток этого решения - это когда какая-то операция должна выполняться, когда эти элементы скрыты (например, у вас есть какой-то компонент внутри, и вы хотите загрузить требуемую информацию, прежде чем показывать скрытые элементы, потому что все пользователи увидят эту функцию рядом с функцией)
Решения № 2 и 3 - это ... противоположность * ngIf (DOM содержит HTML, поэтому файлы ts позволяют что-то делать с контентом, а также выполнять некоторые внутренние операции)