Skip to content

Commit 9c35c23

Browse files
committed
fix(table): use afterRenderEffect() instead of effect() to avoid NG0500: During hydration expected...
1 parent 3a4c5dc commit 9c35c23

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

projects/coreui-angular/src/lib/table/table.directive.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, Renderer2 } from '@angular/core';
1+
import {
2+
afterRenderEffect,
3+
booleanAttribute,
4+
computed,
5+
Directive,
6+
ElementRef,
7+
inject,
8+
input,
9+
Renderer2
10+
} from '@angular/core';
211
import { Breakpoints, Colors } from '../coreui.types';
312

413
@Directive({
@@ -109,17 +118,21 @@ export class TableDirective {
109118
} as Record<string, boolean>;
110119
});
111120

112-
readonly #responsiveWrapperEffect = effect(() => {
113-
const responsive = this.responsive();
114-
if (!!responsive) {
115-
const nativeElement: HTMLElement = this.#hostElement.nativeElement;
116-
const wrapper = this.#renderer.createElement('div');
117-
const className = responsive === true ? 'table-responsive' : `table-responsive-${responsive}`;
118-
this.#renderer.addClass(wrapper, className);
119-
const parentNode = this.#renderer.parentNode(nativeElement);
120-
this.#renderer.appendChild(parentNode, wrapper);
121-
this.#renderer.insertBefore(parentNode, wrapper, nativeElement);
122-
this.#renderer.appendChild(wrapper, nativeElement);
121+
readonly #responsiveWrapperEffect = afterRenderEffect({
122+
// this fixes RuntimeError: NG0500: During hydration Angular expected <abc> but found <xyz>.
123+
// Find more at https://angular.dev/errors/NG0500
124+
write: () => {
125+
const responsive = this.responsive();
126+
if (!!responsive) {
127+
const nativeElement: HTMLElement = this.#hostElement.nativeElement;
128+
const wrapper = this.#renderer.createElement('div');
129+
const className = responsive === true ? 'table-responsive' : `table-responsive-${responsive}`;
130+
this.#renderer.addClass(wrapper, className);
131+
const parentNode = this.#renderer.parentNode(nativeElement);
132+
this.#renderer.appendChild(parentNode, wrapper);
133+
this.#renderer.insertBefore(parentNode, wrapper, nativeElement);
134+
this.#renderer.appendChild(wrapper, nativeElement);
135+
}
123136
}
124137
});
125138
}

0 commit comments

Comments
 (0)