As of v18, MatCheckbox supports disabledInteractive
(used in conjunction with disabled
) which a) retains the styles of a non-disabled checkboxes and also b) allows the checkbox to be focused but not changed. You can also play around with clickAction
('noop') but that uses providers (MAT_CHECKBOX_DEFAULT_OPTIONS) so it becomes all-or-nothing in a given component (you could create a wrapper component, however, in order to localize the setting).