I'm using angular Server Side Rendering.
I now need to implement dark mode.
For this purpose, I used to do the following window.matchMedia('(prefers-color-scheme: dark)')
. but window
shall not be used in this context as the variable doesn't exists yet.
Did someone manage to implement darkMode with Angular SSR ?
Reading the document, window
shall be used in both context
afterRender
or afterNextRender
.
So the following shall be used
// app.component.ts
import { afterRender } from '@angular/core'
// ...
isDarkMode$ = signal<boolean>(false)
constructor() {
const r = afterRender() {
isDarkMode.set(window.matchMedia('(prefers-color-scheme: dark)'))
r.destroy() // Don't forget to unsubscribe
}
}