#html #angular #primeng
#HTML #угловой #primeng
Вопрос:
Я работаю с списком выбора PrimeNG, и вот что у меня есть:
Основное внимание уделяется первой строке, не обращайте внимания на то, что в других строках нет переключателя (это незавершенные тестовые данные).
Чего я пытаюсь добиться, так это того, что когда вы нажимаете на первый вариант «Good: Stock», появляется небольшой выпадающий список справа с A1. Когда вы выбираете «Плохой», он исчезает. Проблема сейчас в том, что когда я выбираю «Хорошо» для одного элемента, выпадающий список будет отображаться для каждой записи в цикле.
Я хочу, чтобы он отображался только для элемента, в котором я выбрал radiobutton.
Любая помощь приветствуется! Спрашивайте, если вам нужно больше кода, но я не думаю, что файл .ts имеет значение на данный момент.
Вот как выглядит код:
<label for="productGroup">Select product</label>
<div class="form-group" id="productGroup">
<div class="row">
<div class="col">
<p-pickList [source]="products"
(onMoveToTarget)="onMoveToTarget()"
[target]="selectedProducts" sourceHeader="Available" targetHeader="Selected"
[responsive]="true" filterBy="description,productNumber"
dragdrop="true" dragdropScope="products" [showTargetControls]="false" [showSourceControls]="false"
sourceFilterPlaceholder="Search product in Available"
targetFilterPlaceholder="Search product in Selected"
[sourceStyle]="{'height':'33vh'}" [targetStyle]="{'height':'33vh'}">
<ng-template let-product pTemplate="item">
<div id="product" class="row ui-helper-clearfix">
<div class="col-1 padding-0 brighten">
<img (mouseover)="getProductImage(product)"
[escape]="false"
pTooltip='<img style="max-height: 100%; max-width: 100%" src="{{base64String}}">'
tooltipPosition="right"
src="assets/eye-icon.png" style="max-width: 100%; width: 80%;">
</div>
<div class="col-4">
<div class="row">{{product.description}}</div>
<br>
<div class="row">{{product.productNumber}}</div>
</div>
<div class="col-4" *ngIf="inbound amp;amp; product.goodLabel amp;amp; product.badLabelInWarranty amp;amp;!hqAdminamp;amp;!carStock">
<div class="row">
<p-radioButton (onClick)="toggleProjects(true, product.id)" name="{{product.productNumber}}"
label="Good: {{product.goodLabel.name}}"
[value]="product.goodLabel" [(ngModel)]="product.quality">
</p-radioButton>
<p-radioButton name="{{product.productNumber}}"
label="Bad: {{product.badLabelInWarranty.name}}/{{product.badLabelOutOfWarranty.name}}"
[value]="product.badLabelInWarranty" [(ngModel)]="product.quality"
(onClick)="toggleProjects(false, product.id)">
</p-radioButton>
</div>
</div>
<div class="col-2 nopadding" *ngIf="goodSelected">
<p-dropdown id="dropdownInput"
[autoWidth]="false"
[options]="projectLabelSelectItems">
</p-dropdown>
</div>
</ng-template>
</p-pickList>
</div>
</div>
</div>
Комментарии:
1. (onClick)=»Переключать проекты (false, product.id )» что такое код для этого, как вы обрабатываете этот код, поскольку я вижу, что эта переменная будет повторяться несколько раз, как это было в таблице и в цикле for.
2. Привет @ShivShankarNamdev , извините за поздний ответ. Метод выполняет следующее: toggleProjects(enable: boolean){ this.goodSelected = enable; } Появляется выпадающий список. Вы можете увидеть это для * ngIf=»goodSelected» для выпадающего div. Изначально я поместил product.id в методе тоже, но я не знаю, что с ним делать и как с ним обращаться.
Ответ №1:
Что происходит в вашем случае, предположим, давайте возьмем пример, у вас есть 10 строк, и вы поддерживаете одну единственную переменную для всей строки, поэтому, что произойдет, когда значение этого флага станет раскрывающимся списком true или false из всех строк, будет отображаться или скрываться.
Итак, что предлагается в коллекции, возьмите одно дополнительное свойство для этого выпадающего столбца.
<div class="col-2 nopadding" *ngIf="goodSelected">
<p-dropdown id="dropdownInput"
[autoWidth]="false"
[options]="projectLabelSelectItems">
</p-dropdown>
</div>
Здесь выбрана единственная переменная вместо добавления одной переменной в свойство
<div class="col-2 nopadding" *ngIf="product.goodSelected">
<p-dropdown id="dropdownInput"
[autoWidth]="false"
[options]="projectLabelSelectItems">
</p-dropdown>
</div>
И при переключении сделайте выбранное значение true или false только для выбранной строки.