|
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'; |
2 | 11 | import { Breakpoints, Colors } from '../coreui.types'; |
3 | 12 |
|
4 | 13 | @Directive({ |
@@ -109,17 +118,21 @@ export class TableDirective { |
109 | 118 | } as Record<string, boolean>; |
110 | 119 | }); |
111 | 120 |
|
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 | + } |
123 | 136 | } |
124 | 137 | }); |
125 | 138 | } |
0 commit comments