Skip to content

Commit 4ba20f4

Browse files
committed
fix: root cdr now calls the component ref cdr after itself
1 parent 1e6f9d2 commit 4ba20f4

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

apps/demo/src/app/test/scene.component.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2-
import { NgtArgs, NgtBeforeRenderEvent } from 'angular-three';
2+
import { NgtBeforeRenderEvent } from 'angular-three';
33

44
@Component({
55
selector: 'demo-test-scene',
66
standalone: true,
77
template: `
8-
<ngt-mesh (beforeRender)="onBeforeRender($any($event))">
9-
<ngt-box-geometry *args="[2, 2, 2]" />
10-
<ngt-mesh-basic-material color="goldenrod" />
8+
<ngt-mesh
9+
(click)="active = !active"
10+
(pointerover)="hover = true"
11+
(pointerout)="hover = false"
12+
[scale]="active ? 1.5 : 1"
13+
(beforeRender)="onBeforeRender($any($event))"
14+
>
15+
<ngt-box-geometry />
16+
<ngt-mesh-basic-material [color]="hover ? 'goldenrod' : 'darkred'" />
1117
</ngt-mesh>
1218
`,
13-
imports: [NgtArgs],
1419
schemas: [CUSTOM_ELEMENTS_SCHEMA],
1520
})
1621
export class Scene {
22+
active = false;
23+
hover = false;
24+
1725
onBeforeRender({ object }: NgtBeforeRenderEvent<THREE.Mesh>) {
1826
object.rotation.x += 0.01;
1927
object.rotation.y += 0.01;

libs/angular-three/src/lib/canvas.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,10 @@ export class NgtCanvas extends NgtRxStore<NgtCanvasInputs> implements OnInit, On
243243
this.envInjector
244244
);
245245
this.glRef = this.glAnchor.createComponent(this.scene, { environmentInjector: this.glEnvInjector });
246-
this.glRef.changeDetectorRef.detectChanges();
247246
this.glRef.changeDetectorRef.detach();
247+
248+
// here, we override the detectChanges to also call detectChanges on the ComponentRef
249+
this.overrideDetectChanges();
248250
this.cdr.detectChanges();
249251
});
250252
}
@@ -259,4 +261,12 @@ export class NgtCanvas extends NgtRxStore<NgtCanvasInputs> implements OnInit, On
259261
injectNgtLoader.destroy();
260262
super.ngOnDestroy();
261263
}
264+
265+
private overrideDetectChanges() {
266+
const originalDetectChanges = this.cdr.detectChanges.bind(this.cdr);
267+
this.cdr.detectChanges = () => {
268+
originalDetectChanges();
269+
this.glRef?.changeDetectorRef.detectChanges();
270+
};
271+
}
262272
}

0 commit comments

Comments
 (0)