Troubleshooting
Common Text Atelier symptoms and their fixes.
Troubleshooting
| Symptom | Most likely cause | Fix |
|---|---|---|
| Editor freezes or re-renders endlessly while typing | Object-identity instability on labels or theme, or HTML transformation in the change handler | See Root cause A and Root cause C |
| Editor in Angular app freezes on startup | activeLabels getter returning a new {} on every CD cycle | Use a stable private readonly emptyLabels = {} field |
| Infinite loop on Angular startup using an old wrapper | isWritingValue guard absent — upgrade the package | Update @innosoft/atelier-editor-angular to ≥ 0.2.1 |
| "Next" / "Submit" button always disabled even after typing | Validators.required on content makes the form permanently invalid before the preview step runs | Remove Validators.required from content; track length via a separate validationVal |
| Button disabled in edit mode (loaded from API) | validationVal is not seeded from API content after patchValue | Compute validationVal from API content in the subscribe callback |
NG8002: Can't bind to 'starterKit' | AtelierEditorComponent is not imported where the template uses it | Add AtelierEditorComponent to the imports array. CUSTOM_ELEMENTS_SCHEMA is only needed for the raw <atelier-editor-element> tag |
| Editor never appears (no element in DOM) | SSR render without a client boundary | Add 'use client' (Next.js), <ClientOnly> (Nuxt), or guard with isPlatformBrowser |
Export PDF button missing | exportPdf flag is false | Set exportPdf={true}. exportPDF() method works regardless. |
| PDF downloads but fonts are wrong | Custom font file not loaded in host page | Add the <link> or @font-face to your application's <head> |
| Custom font in dropdown but text doesn't change | Same — font file not loaded | Load the font file in the host page |
Cannot find module 'html2pdf.js' at runtime | Obfuscator encoded the dynamic import string | Add --reserved-strings "html2pdf\\.js" to your obfuscator config |
| "UNLICENSED" watermark | licenseKey missing, mistyped, or expired | Check the key; editing still works without a valid license |
Cannot read properties of undefined (reading 'trim') | licenseKey prop is undefined rather than an empty string | Default the prop yourself: licenseKey={process.env.NEXT_PUBLIC_LICENSE_EDITOR ?? ''} — the component expects a string, not undefined |
Cannot read properties of null (reading 'getHTML') | Imperative method called before the editor mounted | Call after the editor-ready event or use optional chaining (ref?.getHTML()) |
| No scrollbar when typing a long document in a fixed-height container | The editor's content area grows unbounded — it has no scroll behavior of its own | Give the wrapping element a fixed height and overflow-y: auto so it becomes the scroll container |
Two copies of @innosoft/atelier-editor-core in bundle | Mixed versions of @innosoft packages in the lockfile | Update all @innosoft packages together, then run npm dedupe |
Angular 14 TypeScript errors about .d.ts input format | Published types are generated by a newer Angular compiler | Set "skipLibCheck": true; if template checks still fail, rebuild the wrapper against your Angular major |
