diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 789cfea205a78f19caed0dadb2e377a8f6bc752b..f3361902d976debcf0a15c97487416a3d99efb2a 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -32,6 +32,7 @@ import { AppConfig } from './app.config';
 import { ThemeModule } from '../theme/theme.module';
 import { ServiceWorkerModule } from '@angular/service-worker';
 import { environment } from '../environments/environment';
+import { ModeratorService } from './services/http/moderator.service';
 import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
 import { HttpClient } from '@angular/common/http';
 import { TranslateHttpLoader } from '@ngx-translate/http-loader';
@@ -101,6 +102,7 @@ export function initializeApp(appConfig: AppConfig) {
     MarkedOptions,
     UserService,
     VoteService,
+    ModeratorService,
     WsConnectorService,
     {
       provide: MatDialogRef,
diff --git a/src/app/components/creator/_dialogs/moderators/moderators.component.html b/src/app/components/creator/_dialogs/moderators/moderators.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/components/creator/_dialogs/moderators/moderators.component.scss b/src/app/components/creator/_dialogs/moderators/moderators.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/components/creator/_dialogs/moderators/moderators.ts b/src/app/components/creator/_dialogs/moderators/moderators.ts
new file mode 100644
index 0000000000000000000000000000000000000000..03de99cbed094bdae06c1552963108c692d7835f
--- /dev/null
+++ b/src/app/components/creator/_dialogs/moderators/moderators.ts
@@ -0,0 +1,28 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material';
+import { NotificationService } from '../../../../services/util/notification.service';
+import { TranslateService } from '@ngx-translate/core';
+import { ModeratorService } from '../../../../services/http/moderator.service';
+import { RoomCreatorPageComponent } from '../../room-creator-page/room-creator-page.component';
+import { LanguageService } from '../../../../services/util/language.service';
+
+@Component({
+  selector: 'app-moderators',
+  templateUrl: './moderators.component.html',
+  styleUrls: ['./moderators.component.scss']
+})
+export class ModeratorsComponent implements OnInit {
+
+  constructor(public dialogRef: MatDialogRef<RoomCreatorPageComponent>,
+    public dialog: MatDialog,
+    public notificationService: NotificationService,
+    public translationService: TranslateService,
+    protected moderatorService: ModeratorService,
+    protected langService: LanguageService,
+    @Inject(MAT_DIALOG_DATA) public data: any) {
+      langService.langEmitter.subscribe(lang => translationService.use(lang));
+  }
+
+  ngOnInit() {
+  }
+}
diff --git a/src/app/components/creator/creator.module.ts b/src/app/components/creator/creator.module.ts
index 349e8dbcfb28f4034306e854ed4c586a178778ae..23bd007379aff117db79cbfdfa886e0f333126df 100644
--- a/src/app/components/creator/creator.module.ts
+++ b/src/app/components/creator/creator.module.ts
@@ -22,6 +22,7 @@ import { ContentListComponent } from './content-list/content-list.component';
 import { ContentEditComponent } from './_dialogs/content-edit/content-edit.component';
 import { ContentPresentationComponent } from './content-presentation/content-presentation.component';
 import { CommentExportComponent } from './_dialogs/comment-export/comment-export.component';
+import { ModeratorsComponent } from './_dialogs/moderators/moderators';
 
 @NgModule({
   imports: [
@@ -52,7 +53,8 @@ import { CommentExportComponent } from './_dialogs/comment-export/comment-export
     ContentListComponent,
     ContentEditComponent,
     ContentPresentationComponent,
-    CommentExportComponent
+    CommentExportComponent,
+    ModeratorsComponent
   ],
   entryComponents: [
     RoomDeleteComponent,
diff --git a/src/app/models/moderator.ts b/src/app/models/moderator.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8cea01448e4cd5b132053f6b3f4a9e87d395c016
--- /dev/null
+++ b/src/app/models/moderator.ts
@@ -0,0 +1,12 @@
+export class Moderator {
+  userId: string;
+  loginId: string;
+
+  constructor(
+    userId: string = '',
+    loginId: string = ''
+  ) {
+    this.userId = userId;
+    this.loginId = loginId;
+  }
+}
diff --git a/src/app/services/http/moderator.service.ts b/src/app/services/http/moderator.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..47c7700baf49bd8c38cf628fb43a98f766c546b4
--- /dev/null
+++ b/src/app/services/http/moderator.service.ts
@@ -0,0 +1,48 @@
+import { Injectable } from '@angular/core';
+import { HttpClient, HttpHeaders } from '@angular/common/http';
+import { Observable } from 'rxjs';
+import { Moderator } from '../../models/moderator';
+import { catchError, tap } from 'rxjs/operators';
+import { BaseHttpService } from './base-http.service';
+
+const httpOptions = {
+  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
+};
+
+@Injectable()
+export class ModeratorService extends BaseHttpService {
+  private apiUrl = {
+    base: '/api',
+    room: '/room',
+    moderator: '/moderator',
+    find: '/find'
+  };
+
+  constructor(private http: HttpClient) {
+    super();
+  }
+
+  get(roomId: string): Observable<Moderator[]> {
+    const url = `${this.apiUrl.base + this.apiUrl.room}/${roomId + this.apiUrl.moderator}`;
+    return this.http.get(url, httpOptions).pipe(
+      tap(_ => ''),
+      catchError(this.handleError<any>('getModerator'))
+    );
+  }
+
+  put(roomId: string, userId: string) {
+    const url = `${this.apiUrl.base + this.apiUrl.room}/${roomId + this.apiUrl.moderator}/${userId}`;
+    return this.http.put(url, httpOptions).pipe(
+      tap(_ => ''),
+      catchError(this.handleError<any>('putModerator'))
+    );
+  }
+
+  delete(roomId: string, userId: string) {
+    const url = `${this.apiUrl.base + this.apiUrl.room}/${roomId + this.apiUrl.moderator}/${userId}`;
+    return this.http.delete(url, httpOptions).pipe(
+      tap(_ => ''),
+      catchError(this.handleError<any>('deleteModerator'))
+    );
+  }
+}