diff --git a/package-lock.json b/package-lock.json
index 899edcd9d78f7ed35c79401385c45dbc7fe45aba..bbcb2ca25c430d064a067b3184b9b06e6c03a477 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1695,6 +1695,14 @@
         "schema-utils": "^2.7.0"
       }
     },
+    "@kolkov/angular-editor": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@kolkov/angular-editor/-/angular-editor-1.2.0.tgz",
+      "integrity": "sha512-uAXsYxK62rOcgGJZdT3Q8iqJZ1k9BJchmg23+Iwy+oTtaqdzqkjl1Sgeka1uXQRWEUqFFxjxn7CpU8mNLCmeGQ==",
+      "requires": {
+        "tslib": "^2.0.0"
+      }
+    },
     "@ngtools/webpack": {
       "version": "12.0.5",
       "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.0.5.tgz",
diff --git a/package.json b/package.json
index 33c031520ba2b4fd8f7574e89b5923764206a6b4..723efac1a76ecae0df0c171117c8ecf1f6777deb 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
     "@angular/platform-browser": "~12.0.5",
     "@angular/platform-browser-dynamic": "~12.0.5",
     "@angular/router": "~12.0.5",
+    "@kolkov/angular-editor": "^1.2.0",
     "@ngx-translate/core": "^13.0.0",
     "@ngx-translate/http-loader": "^6.0.0",
     "rxjs": "~6.6.0",
diff --git a/projects/common/element-components/text.component.ts b/projects/common/element-components/text.component.ts
index 510198361672a9636e8a5a5779210e0bdf94f28e..ecc65d5bf08289e68d1f724f4be7c6f6b98cc02f 100644
--- a/projects/common/element-components/text.component.ts
+++ b/projects/common/element-components/text.component.ts
@@ -14,8 +14,8 @@ import { ElementComponent } from '../element-component.directive';
          [style.font-weight]="elementModel.bold ? 'bold' : ''"
          [style.font-style]="elementModel.italic ? 'italic' : ''"
          [style.text-decoration]="elementModel.underline ? 'underline' : ''"
-         [style.white-space]="'pre-wrap'">
-        {{elementModel.text}}
+         [style.white-space]="'pre-wrap'"
+         [innerHTML]="elementModel.text">
     </div>
   `
 })
diff --git a/projects/editor/src/app/app.module.ts b/projects/editor/src/app/app.module.ts
index bc153fa83cfc297009ceeb5f25d31005c2a24ae5..d83d72e4fbfe5dff36fac965664e68af4ad78ef7 100644
--- a/projects/editor/src/app/app.module.ts
+++ b/projects/editor/src/app/app.module.ts
@@ -5,6 +5,9 @@ import { CommonModule } from '@angular/common';
 import { createCustomElement } from '@angular/elements';
 import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
 
+import { HttpClientModule } from '@angular/common/http';
+import { AngularEditorModule } from '@kolkov/angular-editor';
+
 import { MatButtonToggleModule } from '@angular/material/button-toggle';
 import { MatSlideToggleModule } from '@angular/material/slide-toggle';
 
@@ -19,7 +22,9 @@ import { SectionComponent } from './components/unit-view/page-view/canvas/sectio
 import { StaticCanvasOverlayComponent } from './components/unit-view/page-view/canvas/static-canvas-overlay.component';
 import { DynamicCanvasOverlayComponent } from './components/unit-view/page-view/canvas/dynamic-canvas-overlay.component';
 import { SharedModule } from '../../../common/app.module';
-import { ConfirmationDialog, MultilineTextEditDialog, TextEditDialog } from './dialog.service';
+import {
+  ConfirmationDialog, MultilineTextEditDialog, RichTextEditDialog, TextEditDialog
+} from './dialog.service';
 import { EditorTranslateLoader } from './editor-translate-loader';
 import { PagePropertiesComponent } from './components/unit-view/page-view/properties/page-properties.component';
 import { SectionPropertiesComponent } from './components/unit-view/page-view/properties/section-properties.component';
@@ -42,6 +47,7 @@ import { DynamicViewOnlyElementOverlayComponent } from './components/unit-view/p
     ConfirmationDialog,
     TextEditDialog,
     MultilineTextEditDialog,
+    RichTextEditDialog,
     PagePropertiesComponent,
     SectionPropertiesComponent,
     ElementPropertiesComponent,
@@ -55,6 +61,8 @@ import { DynamicViewOnlyElementOverlayComponent } from './components/unit-view/p
     SharedModule,
     MatButtonToggleModule,
     MatSlideToggleModule,
+    HttpClientModule,
+    AngularEditorModule,
     TranslateModule.forRoot({
       loader: {
         provide: TranslateLoader,
diff --git a/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.ts b/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.ts
index 3f05a18d3a512b863a37e05146ae617e099cbe86..8e37e2e44d4cc963a1d5a4702232322a036e0147 100644
--- a/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.ts
@@ -37,7 +37,11 @@ import { MessageService } from '../../../../../../../common/message.service';
               <mat-label>Text</mat-label>
               <textarea matInput type="text" cdkTextareaAutosize [value]="combinedProperties.text"
                         (input)="updateModel('text', $any($event.target).value)">
-            </textarea>
+              </textarea>
+              <button mat-icon-button matSuffix
+                      (click)="unitService.showDefaultEditDialog(selectedElements[0])">
+                <mat-icon>edit</mat-icon>
+              </button>
             </mat-form-field>
 
             <mat-form-field *ngIf="combinedProperties.type === 'text-field'">
diff --git a/projects/editor/src/app/dialog.service.ts b/projects/editor/src/app/dialog.service.ts
index 5b019bbcdf5705e72158e5386c9ea543038b4a88..7b312d0f1ef5ac688a31f73aa950e37afeeaf58b 100644
--- a/projects/editor/src/app/dialog.service.ts
+++ b/projects/editor/src/app/dialog.service.ts
@@ -2,6 +2,7 @@
 import { Component, Inject, Injectable } from '@angular/core';
 import { Observable } from 'rxjs';
 import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
+import { AngularEditorConfig } from '@kolkov/angular-editor';
 
 @Injectable({
   providedIn: 'root'
@@ -32,6 +33,22 @@ export class DialogService {
     }
     return dialogRef.afterClosed();
   }
+
+  showRichTextEditDialog(text: string): Observable<string> {
+    const dialogRef = this.dialog.open(RichTextEditDialog, {
+      width: '700px',
+      height: '600px',
+      data: {
+        text: text,
+        editorConfig: {
+          editable: true,
+          minHeight: '350px',
+          toolbarHiddenButtons: [[], ['insertImage', 'insertVideo']]
+        }
+      }
+    });
+    return dialogRef.afterClosed();
+  }
 }
 
 @Component({
@@ -86,3 +103,19 @@ export class TextEditDialog {
 export class MultilineTextEditDialog {
   constructor(@Inject(MAT_DIALOG_DATA) public data: { oldText: string }) { }
 }
+
+@Component({
+  selector: 'app-rich-text-edit-dialog',
+  template: `
+    <mat-dialog-content>
+      <angular-editor [(ngModel)]="data.text" [config]="data.editorConfig"></angular-editor>
+    </mat-dialog-content>
+    <mat-dialog-actions>
+      <button mat-button [mat-dialog-close]="data.text">Okay</button>
+      <button mat-button mat-dialog-close>Abbruch</button>
+    </mat-dialog-actions>
+    `
+})
+export class RichTextEditDialog {
+  constructor(@Inject(MAT_DIALOG_DATA) public data: { text: string, editorConfig: AngularEditorConfig }) { }
+}
diff --git a/projects/editor/src/app/unit.service.ts b/projects/editor/src/app/unit.service.ts
index 042b58853435045443dc0559ea41ae95045b3d93..4b21f4a05f0c65aa78bb194ef26a42c29cba6284 100644
--- a/projects/editor/src/app/unit.service.ts
+++ b/projects/editor/src/app/unit.service.ts
@@ -270,7 +270,7 @@ export class UnitService {
         });
         break;
       case 'text':
-        this.dialogService.showTextEditDialog((element as any).text, true).subscribe((result: string) => {
+        this.dialogService.showRichTextEditDialog((element as any).text).subscribe((result: string) => {
           if (result) {
             this.updateElementProperty([element], 'text', result);
           }