#angular #typescript #forms #checkbox #angular8
#angular #typescript #формы #флажок #angular8
Вопрос:
Мне нужно показать форму и скрыть форму с помощью ngif, когда событие щелчка происходит в флажке.
мой заголовок столбца и мой код значений столбцов
<th><label class="btn btn-filter">
<input type="checkbox" name="allTrades" [value]="trade" (change)="allTrades($event)"> status
</label>amp;nbsp;</th>
У меня есть имя столбца состояния и рядом есть флажок
<td><ng-container *ngFor="let trd of trade">
<label class="btn btn-filter">
<input type="checkbox" name="trades" [checked]="trd.selected" (change)="yourfunc($event)" (change)="handleSelected($event)">{{ trd.label}}
</label>amp;nbsp;
</ng-container></td>
У меня есть значения столбца состояния, и я написал таким образом, что когда я нажимаю флажок в заголовке моего столбца, все значения флажков в столбце включаются и наоборот
Содержимое, которое я хочу показать, когда флажок будет включен
Что мне нужно, так это то, что я хочу показать содержимое этого фрагмента html, когда флажок будет включен, и он должен быть скрыт, когда флажок будет отключен.
<div *ngif=ischeck>
<mat-form-field class="example-full-width" >
<input class="toolbar-search" type="text" matInput autocomplete="off" >
<mat-placeholder>Name</mat-placeholder>
</mat-form-field>
<mat-form-field class="example-full-width" >
<input class="toolbar-search" type="text" matInput autocomplete="off">
<mat-placeholder>City</mat-placeholder>
</mat-form-field>
</div>
мои ts. Здесь выбранная обработка ($event) — это функция события щелчка, которую я пытаюсь скрыть html
trade = [
{ label: ' Check', selected: false },
];
allTrades(event) {
const checked = event.target.checked;
this.trade.forEach(item => item.selected = checked);
}
handleSelected($event) {
if ($event.target.checked === true) {
// Handle your code
this.ischeck=true
}
}
ПРИМЕЧАНИЕ: код флажка, написанный здесь, написан таким образом, что у меня есть флажок рядом с именем столбца, и когда я включаю его, все флажки в значениях столбцов включаются, и наоборот.
https://stackblitz.com/edit/angular-ivy-zahy1b?file=src/app/app.component.html
Моя ссылка на stackblitz. Когда я автоматически устанавливаю флажок состояния, другой флажок повторяет то же самое. Эту часть я выполнил. Что мне нужно, так это то, что я хотел отображать содержимое в теге div, когда флажок включен
Комментарии:
1. я действительно пытался, но я не мог понять, чего вы пытаетесь достичь, и не смог… Я думаю, вам лучше создать фрагмент вашего кода здесь: stackblitz.com/fork/angular-ivy и обновляю ваш вопрос
2. Я опубликовал ссылку на stackblitz, брат. Я также подробно изложил свой вопрос. Пожалуйста, помогите, если можете. @TheFabio
3. . Надеюсь, это поможет @TheFabio
4. правильный синтаксис для ngif —
*ngIf
если вы его исправите, он будет работать5. Я знаю, что допустил ошибку в этом. Но нет, это не работает. можете ли вы обновить stackblitz и опубликовать @TheFabio
Ответ №1:
вам необходимо сохранить состояние checked в используемой вами модели, а не в отдельной isChecked
переменной…
Вот рабочее решение https://stackblitz.com/edit/angular-ivy-kfycuc
переместите div в ng-container
<ng-container *ngFor="let trd of trade">
<label class="btn btn-filter">
<input type="checkbox" name="trades" [checked]="trd.selected" (change)="handleSelected($event, trd)">{{ trd.label}}
</label>amp;nbsp;
<div *ngIf="trd.selected">
<h1>Heey</h1>
</div>
</ng-container>
и измените свой обработчик, чтобы обновить модель:
handleSelected($event, trd) {
trd.selected = $event.target.checked;
}
Комментарии:
1. Привет, спасибо за попытку, но это не работает в моем реальном сценарии.
2. Оно отображается в значениях td в таблице, что является беспорядочным, а не тем, что я хочу
3. Можете ли вы сделать это другим методом, который, наконец, не требует закрытия тега td, и написать отдельный обработчик событий
4. предполагается ли отображать текст, если какой-либо из торговых позиций «выбран»? или когда именно вам нужно его отобразить?