Skip to content

Commit d8780af

Browse files
committed
fix(soba/abstractions): use viewChild on Text to set NgtObjectEvents
1 parent 627b40f commit d8780af

File tree

1 file changed

+11
-4
lines changed
  • libs/soba/abstractions/src/lib

1 file changed

+11
-4
lines changed

libs/soba/abstractions/src/lib/text.ts

+11-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ import {
33
ChangeDetectionStrategy,
44
Component,
55
DestroyRef,
6+
ElementRef,
7+
computed,
68
effect,
79
inject,
810
input,
911
output,
12+
viewChild,
1013
} from '@angular/core';
1114
import { NgtArgs, NgtObjectEvents, NgtThreeElements, injectStore, omit, pick } from 'angular-three';
1215
import { mergeInputs } from 'ngxtension/inject-inputs';
@@ -59,6 +62,7 @@ const defaultOptions: NgtsTextOptions = {
5962
selector: 'ngts-text',
6063
template: `
6164
<ngt-primitive
65+
#textPrimitive
6266
*args="[troikaMesh]"
6367
[text]="text()"
6468
[font]="font()"
@@ -115,15 +119,18 @@ export class NgtsText {
115119

116120
troikaMesh = new Text();
117121

122+
// TODO: (chau) we currently need to use this with NgtObjectEvents
123+
// to make sure `ngt-primitive` is instantitated before `injectObjectEvents`
124+
private textPrimitiveRef = viewChild<ElementRef<Text>>('textPrimitive');
125+
private textPrimitive = computed(() => this.textPrimitiveRef()?.nativeElement);
126+
118127
constructor() {
128+
this.objectEvents.ngtObjectEvents.set(this.textPrimitive);
129+
119130
inject(DestroyRef).onDestroy(() => {
120131
this.troikaMesh.dispose();
121132
});
122133

123-
effect(() => {
124-
this.objectEvents.ngtObjectEvents.set(this.troikaMesh);
125-
});
126-
127134
effect(() => {
128135
const [font, characters, invalidate] = [this.font(), this.characters(), this.store.invalidate()];
129136
if (font) {

0 commit comments

Comments
 (0)