Отключенное свойство Angular8 PrimeNG multiselect не работает

#html #angular #typescript #primeng

#HTML #angular #typescript #primeng

Вопрос:

Я пытаюсь интегрировать PrimeNG multi select, поскольку хочу отключить некоторые параметры. Я использовал disabled свойство, как указано в документе PrimeNG, но оно не работает.

Вот фрагмент кода и значения параметров:

введите описание изображения здесь

 <p-multiSelect [filter]="true" [virtualScroll]="true" [resetFilterOnHide]="true" optionLabel="label" [(ngModel)]="rowData[col.dataField]"
                                            name="{{col.dataField}}_{{topIndex}}_{{rowIndex}}_{{colIndex}}" [options]="calculationVariables"
                                            defaultLabel="Please Select" autoWidth="false" [style]="{'width':'100%'}" styleClass="priliminary-dorpdown-style {{rowData[col.dataField]?.length == 0 ?  'invalid-control': null}}">
                                            <ng-template let-item pTemplate="selectedItem">
                                                <span class="multicheck-label">{{item.label}}</span>
                                            </ng-template>
                                            <ng-template let-variable pTemplate="item">
                                                <div pTooltip="{{variable.label}}" tooltipPosition="right">
                                                    <span class="multicheck-label">{{variable.label}}</span>
                                                </div>
                                            </ng-template>
                                        </p-multiSelect> 
  

Комментарии:

1. Я не вижу отключенного свойства в вашем html, возможно, вы просто забыли его ввести.

2. как мы можем установить отключенное свойство для параметров в html

3. forum.primefaces.org/viewtopic.php?t=58528

4. возможно, удалите optionLabel=»label» из html, ссылка, по словам бове, может быть проблемой

Ответ №1:

Вы также можете отключить любой элемент в primeng multiSelect, используя ng-template, событие щелчка и пользовательский стиль, как показано ниже:

Метод, который запускается при событии щелчка

 onClick(disabled: boolean) {
        if(disabled) {
            event.stopPropagation();
        }
    }
  

Настройка Primeng MultiSelect с использованием ng-шаблона и добавление ng-стиля

 <p-multiSelect optionLabel="label"
               name="{{col.dataField}}_{{topIndex}}_{{rowIndex}}_{{colIndex}}"
               defaultLabel="Please Select"
               autoWidth="false"
               [filter]="true"
               [virtualScroll]="true"
               [resetFilterOnHide]="true"
               [(ngModel)]="rowData[col.dataField]"
               [options]="calculationVariables"
               [style]="{'width':'100%'}"
               styleClass="priliminary-dorpdown-style {{rowData[col.dataField]?.length == 0 ?  'invalid-control': null}}">

    <ng-template let-option pTemplate="item">
            <div class="multicheck-label"
                 (click)="onClick(item.disabled)"
                 [ngStyle]="item.disabled? {'color': '#ccc', 'cursor': 'default'} : ''"> {{item.label}}
            </div>
    </ng-template>

    <ng-template let-variable pTemplate="item">
        <div pTooltip="{{variable.label}}" tooltipPosition="right">
            <span class="multicheck-label">{{variable.label}}</span>
        </div>
    </ng-template>
    
</p-multiSelect>
  

Ответ №2:

В primeng 11 появилось новое свойство «optionDisabled«.

пример использования:

 <p-multiSelect [options]="cities" [(ngModel)]="selectedCities" optionLabel="name" optionDisabled="inactive"></p-multiSelect>
  

экспортировать класс MultiSelectDemo {

 cities: City[];

selectedCities: City[];

constructor() {
    this.cities = [
        {name: 'New York', code: 'NY', inactive: false},
        {name: 'Rome', code: 'RM', inactive: true},
        {name: 'London', code: 'LDN', inactive: false},
        {name: 'Istanbul', code: 'IST', inactive: true},
        {name: 'Paris', code: 'PRS', inactive: false}
    ];
}
  

}

С помощью свойства optionDisabled можно запретить выбор определенных параметров.