mat-checkbox
uses default material theme colors.
By defualt checkboxes uses the material theme accent
color, and we can change it to primary
or warn
using color
property.
And in most of the real world projects we will give our own custom colors to the mat-checkbox and there is no direct way or property though which we can change the mat-checkbox color.
To change mat-checkbox color we need to override the default theme css colors.
Let’s go though an example
mat-checkbox color
Add a simple checkbox with the label checkbox color
.
<mat-checkbox>checkbox color</matcheckbox>
And see the generated HTML for the above checkbox.
mat-checkbox
will generate a span element with the class .mat-checkbox-background
through which we can control the background color of checkbox.
Now all we have to do is adding background-color css to the .mat-checkbox-background
class.
.mat-checkbox-checked.mat-accent .mat-checkbox-background {
background-color: black !important;
}
And in older versions of Angular we might need to add ::ng-deep
as well.
::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background {
background-color: black !important;
}
mat-checkbox change ripple color
Similarly to change the ripple mat-checkbox ripple color, we need to change the background color of .mat-ripple-element
element.
::ng-deep .mat-checkbox-ripple .mat-ripple-element {
background-color: black !important;
}
mat-checkbox change color of Indeterminate state.
When a mat-checkbox is in indeterminate state, it will have a class named .mat-checkbox-indeterminate
For the checked state we have .mat-checkbox-checked
class as explained above.
So we need to change the background color of .mat-checkbox-background
element inside of .mat-checkbox-indeterminate
.
::ng-deep .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background {
background-color: black !important;
}
Stackblitz demo
Here is the link to stackblitz demo for mat-checkbox color change.