diff --git a/projects/common/element-components/checkbox.component.ts b/projects/common/element-components/checkbox.component.ts
index 839276244bb4a904aa7268198d5221e899578b44..1d5e2d79d9abf5277c634cfd9a7b9ce084ca0385 100644
--- a/projects/common/element-components/checkbox.component.ts
+++ b/projects/common/element-components/checkbox.component.ts
@@ -11,14 +11,15 @@ import { CheckboxElement } from '../models/checkbox-element';
          [style.height.%]="100"
          [style.background-color]="elementModel.backgroundColor">
       <mat-checkbox #checkbox class="example-margin"
-                    (click)="elementModel.readOnly ? $event.preventDefault() : null"
                     [formControl]="elementFormControl"
+                    [checked]="$any(elementModel.value)"
                     [style.color]="elementModel.fontColor"
                     [style.font-family]="elementModel.font"
                     [style.font-size.px]="elementModel.fontSize"
                     [style.font-weight]="elementModel.bold ? 'bold' : ''"
                     [style.font-style]="elementModel.italic ? 'italic' : ''"
-                    [style.text-decoration]="elementModel.underline ? 'underline' : ''">
+                    [style.text-decoration]="elementModel.underline ? 'underline' : ''"
+                    (click)="elementModel.readOnly ? $event.preventDefault() : null">
         <div [style.line-height.%]="elementModel.lineHeight" [innerHTML]="elementModel.label"></div>
       </mat-checkbox>
       <mat-error *ngIf="elementFormControl.errors && elementFormControl.touched"
diff --git a/projects/common/element-components/compound-elements/likert-radio-button-group.component.ts b/projects/common/element-components/compound-elements/likert-radio-button-group.component.ts
index cc99f8085716d5883972756c3b43705c287c29e7..0cc99391bbcdaf1594e90ac9018b8222ca1258ea 100644
--- a/projects/common/element-components/compound-elements/likert-radio-button-group.component.ts
+++ b/projects/common/element-components/compound-elements/likert-radio-button-group.component.ts
@@ -7,8 +7,9 @@ import { LikertElementRow } from '../../models/compound-elements/likert-element-
   selector: 'app-likert-radio-button-group',
   template: `
     <mat-radio-group [style.display]="'grid'"
-                     [style.grid-template-columns]="'5fr ' + '2fr '.repeat(elementModel.columnCount)"
-                     [formControl]="elementFormControl">
+                     [formControl]="elementFormControl"
+                     [value]="elementModel.value"
+                     [style.grid-template-columns]="'5fr ' + '2fr '.repeat(elementModel.columnCount)">
       <div [style.grid-column-start]="1"
            [style.grid-column-end]="2"
            [style.grid-row-start]="1"
diff --git a/projects/common/element-components/dropdown.component.ts b/projects/common/element-components/dropdown.component.ts
index 202d4f9df382053a96740cdb22bd18912d36e18b..66f3d33dccaf495917891d2202681ad7de005079 100644
--- a/projects/common/element-components/dropdown.component.ts
+++ b/projects/common/element-components/dropdown.component.ts
@@ -17,9 +17,10 @@ import { DropdownElement } from '../models/dropdown-element';
                  [style.text-decoration]="elementModel.underline ? 'underline' : ''">
         {{$any(elementModel).label}}
       </mat-label>
-      <mat-select [formControl]="elementFormControl">
-        <mat-option *ngIf="elementModel.allowUnset" value="" (click)="$event.preventDefault()"
-                    [style.pointer-events]="elementModel.readOnly ? 'none' : 'unset'">
+      <mat-select [formControl]="elementFormControl" [value]="elementModel.value">
+        <mat-option *ngIf="elementModel.allowUnset" value=""
+                    [style.pointer-events]="elementModel.readOnly ? 'none' : 'unset'"
+                    (click)="$event.preventDefault()">
         </mat-option>
         <mat-option *ngFor="let option of elementModel.options; let i = index" [value]="i"
                     [style.pointer-events]="elementModel.readOnly ? 'none' : 'unset'">
diff --git a/projects/common/element-components/radio-button-group.component.ts b/projects/common/element-components/radio-button-group.component.ts
index 2a25eba1e2056fa7010f596d5eaeb603eb56c109..f16ee18a6ae2e9cd0843946b63036d29c9a18fbb 100644
--- a/projects/common/element-components/radio-button-group.component.ts
+++ b/projects/common/element-components/radio-button-group.component.ts
@@ -18,10 +18,10 @@ import { RadioButtonGroupElement } from '../models/radio-button-group-element';
       <label id="radio-group-label" class="white-space-break"
              [innerHTML]="elementModel.label">
       </label>
-<!--      TODO why margin-bottom?-->
       <mat-radio-group aria-labelledby="radio-group-label"
                        [fxLayout]="elementModel.alignment"
                        [formControl]="elementFormControl"
+                       [value]="elementModel.value"
                        [style.margin-top.px]="10">
         <mat-radio-button *ngFor="let option of elementModel.options; let i = index"
                           [ngClass]="{ 'strike' : elementModel.strikeOtherOptions &&
diff --git a/projects/common/element-components/text-area.component.ts b/projects/common/element-components/text-area.component.ts
index 5f9e485f27e72ba7f7b6ad66da61f644ccd2c9c7..7a8cf9347710ec3707c10fc17b0785df1648e6df 100644
--- a/projects/common/element-components/text-area.component.ts
+++ b/projects/common/element-components/text-area.component.ts
@@ -15,16 +15,16 @@ import { TextAreaElement } from '../models/text-area-element';
                     [style.font-style]="elementModel.italic ? 'italic' : ''"
                     [style.text-decoration]="elementModel.underline ? 'underline' : ''"
                     [appearance]="$any(elementModel.appearance)">
-      <textarea matInput [formControl]="elementFormControl" #input
-                rows="{{elementModel.rowCount}}"
+      <textarea matInput #input
+                autocomplete="off" rows="{{elementModel.rowCount}}" placeholder="{{elementModel.label}}"
+                [formControl]="elementFormControl"
+                [value]="elementModel.value"
                 [readonly]="elementModel.readOnly"
-                (focus)="onFocus.emit(input)"
-                (blur)="onBlur.emit(input)"
-                autocomplete="off"
-                placeholder="{{elementModel.label}}"
                 [style.min-width.%]="100"
                 [style.line-height.%]="elementModel.lineHeight"
-                [style.resize]="elementModel.resizeEnabled ? 'both' : 'none'">
+                [style.resize]="elementModel.resizeEnabled ? 'both' : 'none'"
+                (focus)="onFocus.emit(input)"
+                (blur)="onBlur.emit(input)">
       </textarea>
       <mat-error *ngIf="elementFormControl.errors">
         {{elementFormControl.errors | errorTransform: elementModel}}
diff --git a/projects/common/element-components/text-field.component.ts b/projects/common/element-components/text-field.component.ts
index 01fff83ee236981f3e5cd5be1cd2a1b3cb6d1f34..ce0ac96c775a92e0b743aad70791d205edc1aa31 100644
--- a/projects/common/element-components/text-field.component.ts
+++ b/projects/common/element-components/text-field.component.ts
@@ -18,12 +18,13 @@ import { TextFieldElement } from '../models/text-field-element';
                     appInputBackgroundColor [backgroundColor]="elementModel.backgroundColor"
                     [appearance]="$any(elementModel.appearance)">
       <mat-label>{{elementModel.label}}</mat-label>
-      <input matInput type="text" [pattern]="elementModel.pattern" #input
+      <input matInput type="text" #input autocomplete="off"
+             [formControl]="elementFormControl"
+             [value]="elementModel.value"
+             [pattern]="elementModel.pattern"
              [readonly]="elementModel.readOnly"
              (focus)="onFocus.emit(input)"
-             (blur)="onBlur.emit(input)"
-             autocomplete="off"
-             [formControl]="elementFormControl">
+             (blur)="onBlur.emit(input)">
       <button *ngIf="elementModel.clearable" matSuffix mat-icon-button aria-label="Clear"
               (click)="onClick($event)">
         <mat-icon>close</mat-icon>
@@ -43,13 +44,13 @@ import { TextFieldElement } from '../models/text-field-element';
                     [style.text-decoration]="elementModel.underline ? 'underline' : ''"
                     appInputBackgroundColor [backgroundColor]="elementModel.backgroundColor"
                     [appearance]="$any(elementModel.appearance)">
-      <input matInput type="text" #input
+      <input matInput type="text" #input autocomplete="off"
+             [formControl]="elementFormControl"
+             [value]="elementModel.value"
              [readonly]="elementModel.readOnly"
              [pattern]="elementModel.pattern"
              (focus)="onFocus.emit(input)"
-             (blur)="onBlur.emit(input)"
-             autocomplete="off"
-             [formControl]="elementFormControl">
+             (blur)="onBlur.emit(input)">
       <button *ngIf="elementModel.clearable" matSuffix mat-icon-button aria-label="Clear"
               (click)="onClick($event)">
         <mat-icon>close</mat-icon>
diff --git a/projects/editor/src/app/dialog.service.ts b/projects/editor/src/app/dialog.service.ts
index 75cc5d3d954853e11888637589ee05597653ceb7..7d12c70ee05bad6891bcdfa34be08295741bf250 100644
--- a/projects/editor/src/app/dialog.service.ts
+++ b/projects/editor/src/app/dialog.service.ts
@@ -76,12 +76,13 @@ export class DialogService {
     return dialogRef.afterClosed();
   }
 
-  showLikertRowEditDialog(row: LikertElementRow): Observable<LikertElementRow> {
+  showLikertRowEditDialog(row: LikertElementRow, columns: LikertColumn[]): Observable<LikertElementRow> {
     const dialogRef = this.dialog.open(LikertRowEditDialog, {
       width: '300px',
       height: '550px',
       data: {
-        row: row
+        row: row,
+        columns: columns
       },
       autoFocus: false
     });
@@ -327,14 +328,21 @@ export class LikertColumnEditDialog {
         <mat-label>ID</mat-label>
         <input #idField matInput type="text" [value]="data.row.id">
       </mat-form-field>
+      <mat-select #valueField [value]="data.row.value">
+        <mat-option *ngFor="let column of data.columns; let i = index" [value]="i">
+          {{column.text}}
+        </mat-option>
+      </mat-select>
     </mat-dialog-content>
     <mat-dialog-actions>
       <button mat-button
-              [mat-dialog-close]="{ text: textField.value, id: idField.value }">{{'save' | translate }}</button>
+              [mat-dialog-close]="{ text: textField.value, id: idField.value, value: valueField.value }">
+        {{'save' | translate }}
+      </button>
       <button mat-button mat-dialog-close>{{'cancel' | translate }}</button>
     </mat-dialog-actions>
   `
 })
 export class LikertRowEditDialog {
-  constructor(@Inject(MAT_DIALOG_DATA) public data: { row: LikertElementRow }) { }
+  constructor(@Inject(MAT_DIALOG_DATA) public data: { row: LikertElementRow, columns: LikertColumn[] }) { }
 }
diff --git a/projects/editor/src/app/unit-view/page-view/canvas/canvas-element-overlay.ts b/projects/editor/src/app/unit-view/page-view/canvas/canvas-element-overlay.ts
index fc70ebff1aace1432b50f5b47a138a507afa949b..cb7c584938987814a6bbea1b3d6d15eb206248b7 100644
--- a/projects/editor/src/app/unit-view/page-view/canvas/canvas-element-overlay.ts
+++ b/projects/editor/src/app/unit-view/page-view/canvas/canvas-element-overlay.ts
@@ -4,13 +4,11 @@ import {
   ViewChild, ViewContainerRef, OnInit, OnDestroy, ChangeDetectorRef
 } from '@angular/core';
 import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
 import { UnitService } from '../../../unit.service';
 import * as ElementFactory from '../../../../../../common/util/element.factory';
-import { FormElementComponent } from '../../../../../../common/form-element-component.directive';
 import { ElementComponent } from '../../../../../../common/element-component.directive';
 import { SelectionService } from '../../../selection.service';
-import { InputElement, UIElement, ValueChangeElement } from '../../../../../../common/models/uI-element';
+import { UIElement } from '../../../../../../common/models/uI-element';
 
 @Directive()
 export abstract class CanvasElementOverlay implements OnInit, OnDestroy {
@@ -36,21 +34,17 @@ export abstract class CanvasElementOverlay implements OnInit, OnDestroy {
 
     this.selectionService.selectElement({ componentElement: this, multiSelect: false });
 
-    if (this.childComponent.instance instanceof FormElementComponent) {
-      this.childComponent.instance.formValueChanged
-        .pipe(takeUntil(this.ngUnsubscribe))
-        .subscribe((changeElement: ValueChangeElement) => {
-          this.unitService.updateElementProperty([this.element], 'value', changeElement.values[1]);
-        });
+    // This allows to listen for changed directly on the element. And update the model accordingly.
+    // Since the elements are no longer interactable this code is not used. It may be in the future that
+    // this functionality is wanted again. Therefore the code is kept in commented out form.
 
-      this.unitService.elementPropertyUpdated
-        .pipe(takeUntil(this.ngUnsubscribe))
-        .subscribe(() => {
-          (this.childComponent.instance as FormElementComponent).updateFormValue(
-            (this.element as InputElement).value as string | number | boolean | null
-          );
-        });
-    }
+    // if (this.childComponent.instance instanceof FormElementComponent) {
+    //   this.childComponent.instance.formValueChanged
+    //     .pipe(takeUntil(this.ngUnsubscribe))
+    //     .subscribe((changeElement: ValueChangeElement) => {
+    //       this.unitService.updateElementProperty([this.element], 'value', changeElement.values[1]);
+    //     });
+    // }
   }
 
   setSelected(newValue: boolean): void {
diff --git a/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.ts b/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.ts
index 2feab2233bd8615ce3cdb8038b6d7cea21985ec0..c7ed4680d658f253ee006a09744e07426e63f1eb 100644
--- a/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.ts
+++ b/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.ts
@@ -155,7 +155,8 @@ export class ElementPropertiesComponent implements OnInit, OnDestroy {
 
   async editRowOption(optionIndex: number): Promise<void> {
     await this.unitService.editLikertRow(
-      (this.combinedProperties.rows as LikertElementRow[])[optionIndex] as LikertElementRow
+      (this.combinedProperties.rows as LikertElementRow[])[optionIndex] as LikertElementRow,
+      this.combinedProperties.columns as LikertColumn[]
     );
   }
 }
diff --git a/projects/editor/src/app/unit.service.ts b/projects/editor/src/app/unit.service.ts
index 6da42f9e4bd2a8f77e7b71d71fcf09e180386ff6..e0ef3f02450e131448ee91894142b3c2f7ed55e2 100644
--- a/projects/editor/src/app/unit.service.ts
+++ b/projects/editor/src/app/unit.service.ts
@@ -231,24 +231,31 @@ export class UnitService {
       });
   }
 
-  async editLikertRow(question: LikertElementRow): Promise<void> {
-    await this.dialogService.showLikertRowEditDialog(question)
+  async editLikertRow(row: LikertElementRow, columns: LikertColumn[]): Promise<void> {
+    await this.dialogService.showLikertRowEditDialog(row, columns)
       .subscribe((result: LikertElementRow) => {
         if (result) {
-          if (result.id !== question.id) {
+          if (result.id !== row.id) {
             this.updateElementProperty(
-              [question],
+              [row],
               'id',
               result.id
             );
           }
-          if (result.text !== question.text) {
+          if (result.text !== row.text) {
             this.updateElementProperty(
-              [question],
+              [row],
               'text',
               result.text
             );
           }
+          if (result.value !== row.value) {
+            this.updateElementProperty(
+              [row],
+              'value',
+              result.value
+            );
+          }
         }
       });
   }