Using the TinyMCE package with the Angular framework
The Official TinyMCE Angular component integrates TinyMCE into Angular projects. This procedure creates a basic Angular application containing a TinyMCE editor.
This procedure uses standalone components. If using Angular Modules, see Angular Modules.
For examples of the TinyMCE Angular integration, visit the tinymce-angular storybook.
Prerequisites
This procedure requires Node.js (and npm).
Procedure
-
On a command line or command prompt, install the Angular CLI Tool package.
npm install -g @angular/cli -
Create a new Angular project named
tinymce-angular-demo.ng new --defaults --skip-git tinymce-angular-demo -
Change into the newly created directory.
cd tinymce-angular-demo -
Install the
tinymceandtinymce-angularpackages.npm install tinymce @tinymce/tinymce-angular -
Using a text editor, open
/path/to/tinymce-angular-demo/src/app/app.component.tsand replace the contents with:import { Component } from '@angular/core'; import { EditorComponent } from '@tinymce/tinymce-angular'; @Component({ selector: 'app-root', imports: [EditorComponent], template: ` <h1>TinyMCE 7 Angular Demo</h1> <editor [init]="init" /> ` }) export class AppComponent { init: EditorComponent['init'] = { plugins: 'lists link image table code help wordcount' }; } -
Using a text editor; open
angular.jsonand add TinyMCE to theassetsproperty."assets": [ { "glob": "**/*", "input": "node_modules/tinymce", "output": "/tinymce/" } ] -
Load TinyMCE.
-
To load TinyMCE when the editor is initialized (also known as lazy loading), add a dependency provider to the component using the
TINYMCE_SCRIPT_SRCtoken.import { EditorComponent, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular'; /* ... */ @Component({ /* ... */ standalone: true, imports: [EditorComponent], providers: [ { provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' } ] }) -
To load TinyMCE when the page or application is loaded:
-
Open
angular.jsonand add TinyMCE to the global scripts tag."scripts": [ "node_modules/tinymce/tinymce.min.js" ] -
Update the editor configuration to include the
base_urlandsuffixoptions.export class AppComponent { /* ... */ init: EditorComponent['init'] = { /* ... */ base_url: '/tinymce', // Root for resources suffix: '.min' // Suffix to use when loading resources }; }
-
-
-
Test the application using the Angular development server.
-
To start the development server, navigate to the
tinymce-angular-demodirectory and run:ng serve --open -
To stop the development server, select on the command line or command prompt and press Ctrl+C.
-
Bundling TinyMCE with an Angular application
Tiny does not recommend bundling tinymce and tinymce-angular with a module loader. Bundling these packages can be complex and error prone.
|
To bundle TinyMCE using a module loader (such as Webpack, Rollup, or Browserify), import or require the tinymce package, followed by the tinymce-angular package, then the other required TinyMCE-related imports.
Example of bundling:
/* Add the tinymce-angular wrapper to the bundle */
import { Editor } from '@tinymce/tinymce-angular';
/* For instructions on bundling TinyMCE, see the Bundling TinyMCE documentation. */
For instructions on bundling TinyMCE, see: Bundling TinyMCE.
Deploying the application to a HTTP server
The application will require further configuration before it can be deployed to a production environment. For information on configuring the application for deployment, see: Angular Docs - Building Angular Apps or Angular Docs - Deployment.
To deploy the application to a local HTTP Server:
-
Navigate to the
tinymce-angular-demodirectory and run:ng build -
Copy the contents of the
tinymce-angular-demo/dist/tinymce-angular-demo/browserdirectory to the root directory of the web server.
The application has now been deployed on the web server.
| Additional configuration is required to deploy the application outside the web server root directory, such as http://localhost:<port>/my_angular_application. |
Angular Modules
EditorModule is available to import from @tinymce/tinymce-angular. Which should be included in your my.module.ts file.
import { NgModule } from '@angular/core';
import { EditorModule, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';
@NgModule({
/* ... */
imports: [
EditorModule
],
providers: [
// If you're self hosting and lazy loading TinyMCE from node_modules:
{ provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' }
],
/* ... */
})
export class MyModule {}
Next Steps
-
For examples of the TinyMCE integration, see: the tinymce-angular storybook.
-
For information on customizing:
-
TinyMCE integration, see: Angular framework Technical Reference.
-
TinyMCE, see: Basic setup.
-
The Angular application, see: the Angular documentation.
-