Standalone Angular components for editing and rendering MathJax (TeX/MathML/AsciiMath).
npm install @mathcode/mathjax-editorStandalone Angular 19 components for editing and rendering math with MathJax.
Supports TeX, MathML, and AsciiMath; includes a compact symbol palette with search.
```
npm i @mathcode/mathjax-editor mathjax
Configure MathJax in your app (Angular CLI):
1) angular.json (application project)
``
"assets": [
"src/favicon.ico",
"src/assets",
{ "glob": "*/", "input": "node_modules/mathjax/sre", "output": "sre" },
{ "glob": "*/", "input": "node_modules/mathjax/input", "output": "input" }
],
"scripts": [
"node_modules/mathjax/tex-mml-chtml.js"
]
2) src/index.html (define config before script loads)
``
All components are standalone. Import and drop into any component.
Template‑driven (ngModel)
`
// component.ts
import { FormsModule } from '@angular/forms';
import { MathEditorComponent } from '@mathcode/mathjax-editor';
content = '';
// component metadata
imports: [FormsModule, MathEditorComponent]
// template
`
Reactive Forms
`
// component.ts
import { FormControl, ReactiveFormsModule } from '@angular/forms';
import { MathEditorComponent } from '@mathcode/mathjax-editor';
editorControl = new FormControl('', { nonNullable: true });
// component metadata
imports: [ReactiveFormsModule, MathEditorComponent]
// template
`
Two‑way binding
``
content = '';
- @Input() value: string — current editor content@Output() valueChange: EventEmitter
- — emitted on user edits (enables [(value)])[formControl]
- ControlValueAccessor — works with , formControlName, [(ngModel)]; supports disabled state
`
// main.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { importProvidersFrom, Component } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { MathEditorComponent } from '@mathcode/mathjax-editor';
@Component({
selector: 'app-root',
standalone: true,
template:
{{ content }},
imports: [FormsModule, MathEditorComponent]
})
class AppComponent { content = ''; }bootstrapApplication(AppComponent, { providers: [importProvidersFrom(FormsModule)] });
`Notes
- Mode switch changes how preview is parsed; it does not convert syntax.
- AsciiMath prose: with the default MathJax v4 AsciiMath setup,
text("...") is not supported. Plain words inside an AsciiMath expression are treated as math identifiers. If you need prose, keep it outside the editor, or switch to TeX mode and use \text{...}` (with the appropriate TeX configuration).