Что ожидается: когда пользователь нажимает кнопку, классы добавляются / удаляются из обоих родительского элемента и некоторых дочерних элементов (чтобы развернуть / свернуть поле ввода текста)
Что я пробовал: я пытался использовать * ngIf на родительском элементе вместе с кнопкой, которая связана с событием click, которое переключает видимость родительского div.При нажатии кнопки родительский элемент div (и, следовательно, все дочерние элементы) удаляются из DOM.При повторном нажатии все добавляется обратно в DOM.Это работает, но это не то, что не очень хорошо работает в плане дизайна.
Я хотел бы связать [ngClass] с нажатием кнопки, что каким-то образом добавит / удалит классы в родительский элементи его дочерние элементы.В приведенном ниже коде я просто использую событие щелчка [ngClass] и отдельную кнопку, которая связана с этим событием щелчка.Это вроде работает, но не полностью, потому что эта кнопка не привязана к [ngClass], и нажатие в любом месте поля приводит к добавлению класса, что приводит к свертыванию текстового поля, когда это не нужно - только сама кнопка«работает», потому что он расположен внутри div 'flex-full-layout section-white-background'.Текстовое поле должно разворачиваться / разворачиваться только при нажатии кнопки.Я хотел бы иметь возможность добавлять / удалять классы из родительских и дочерних элементов, нажав эту единственную кнопку
HTML:
<div class="layout-column flex-full-layout flex-50 column-one">
<button (click)="showHide()" id="btToggle" class="btn btn-info btn-sm ToggleVisibility" >{{buttonName}}</button>
<div class="flex-full-layout section-white-background (click)="showHide()" [ngClass]="status ? 'open' : 'closed'">
<fieldset class="no-bottom-padding">
<legend class="ce-patient-legend-style">Insurance</legend>
## unneeded stuff
</fieldset>
</div>
TS:
status: boolean = false;
buttonName : any = '-';
showHide(){
this.status = !this.status;
if(this.status)
this.buttonName = "+";
else
this.buttonName = "-"
}
«Open» и «closed» - это классы, которые устанавливаются в [ngClass].Затем я устанавливаю CSS для обоих этих классов, и этот CSS применяется в зависимости от того, какой класс активен
CSS:
.open {
height: 17px;
}
.closed {
height: 100%;
}
При нажатии на кнопку «ToggleVisibility» следует добавить / удалить классы.как из родительского элемента 'flex-full-layout section-white-background', так и из его дочерних элементов