Метод 1 - Обработка ngModelChange + обнаружение изменения триггера
Чтобы сделать флажок доступным только для чтения, вы можете обработать событие ngModelChange
:
<p-checkbox ...
[ngModel]="showLinkedRisksOnly"
(ngModelChange)="showOnlyLinkedRisks($event)">
</p-checkbox>
и выполнить следующие действия в обработчике события:
- Установить новое значение
- Если флажок доступен только для чтения
- Обнаружение изменения триггера
- Поместите исходное значение обратно
constructor(private cd: ChangeDetectorRef) { }
showOnlyLinkedRisks(value) {
this.showLinkedRisksOnly = value; // Set the new value
if (!this.condition) { // If the checkbox is readonly
this.cd.detectChanges(); // Trigger change detection
this.showLinkedRisksOnly = !value; // Put the original value back
}
}
См. этот стек бликов для демонстрации.
Метод 2 - Двусторонняя привязка + отключение элемента управления
Альтернативный метод - использовать двустороннюю привязку и отключить элемент управления для предотвращения изменений:
<p-checkbox ...
[(ngModel)]="showLinkedRisksOnly"
[disabled]="!condition">
</p-checkbox>
См. этот стек для демонстрации.