#css #angular
#css #угловой
Вопрос:
У меня есть компонент angular 2 с более чем одной строкой. Я запрашиваю сервер при изменении любой информации. Во время запроса я хочу скрыть этот компонент и вместо него поместить индикатор выполнения, но индикатор выполнения — это всего одна строка. Я хочу, чтобы высота компонента не менялась, когда я помещаю индикатор выполнения.
<!--when this div hide-->
<div class="form-group row" *ngIf="!condition">
<div class="col-sm-12">
<div class="form-group row">
<div class="col-sm-12">
ROW 1
</div>
</div>
<div class="form-group row">
<div class="col-sm-12">
ROW 2
</div>
</div>
<div class="form-group row">
<div class="col-sm-12">
ROW 3
</div>
</div>
</div>
</div>
<!--this div show-->
<div class="form-group row" *ngIf="condition">
Progress bar
</div>
Комментарии:
1. минимальная высота для строки решит вашу проблему
Ответ №1:
Здесь работает репозиторий stackblitz.
Вы можете добиться этого с помощью ngStyle
директивы,
component.ts
public condition: boolean = true;
component.html
<!--when this div hide-->
<div class="form-group row" [ngStyle]="{'visibility': condition ? 'hidden' : 'visible' }">
<div class="col-sm-12">
<div class="form-group row">
<div class="col-sm-12">
ROW 1
</div>
</div>
<div class="form-group row">
<div class="col-sm-12">
ROW 2
</div>
</div>
<div class="form-group row">
<div class="col-sm-12">
ROW 3
</div>
</div>
</div>
</div>
<!--this div show-->
<div class="form-group row" *ngIf="condition">
Progress bar
</div>
Ответ №2:
*ngIf="!condition"
не скрывает элемент, он полностью удаляет его из DOM. Вместо этого вы хотите применить visibility: hidden
свойство отображения.
<div [class.hidden]="condition">...
CSS:
.hidden {
visibility: hidden;
}
Альтернативным решением было бы поместить его во внешний контейнер с определенной высотой (то есть, если вы можете статически определить его вес, так что: внутренний имеет более или менее постоянный размер):
<div class="spacer">
<div *ngIf="!condition">Your inner div goes here
</div>
</div>
CSS:
.spacer {
height: 3rem;
}