diff --git a/src/app/k8s/K8sComponent.ts b/src/app/k8s/K8sComponent.ts
index 5427a8f..07aa901 100644
--- a/src/app/k8s/K8sComponent.ts
+++ b/src/app/k8s/K8sComponent.ts
@@ -49,8 +49,9 @@
   /** Return to list NS Package List */
   public redirectToList(getURL: string): void {
     if (getURL === '/k8s') {
-      this.router.navigate(['/k8s/cluster']).catch();
+      this.router.navigate(['/k8s/cluster']).catch((): void => {
+        // Catch Navigation Error
+    });
     }
   }
-
 }
diff --git a/src/app/k8s/K8sModule.ts b/src/app/k8s/K8sModule.ts
index 51f27b2..14d8165 100644
--- a/src/app/k8s/K8sModule.ts
+++ b/src/app/k8s/K8sModule.ts
@@ -96,8 +96,7 @@
     K8sAddRepoComponent
   ],
   providers: [DataService],
-  schemas: [CUSTOM_ELEMENTS_SCHEMA],
-  entryComponents: [K8sActionComponent, K8sAddClusterComponent, K8sAddRepoComponent]
+  schemas: [CUSTOM_ELEMENTS_SCHEMA]
 })
 /** Exporting a class @exports K8sModule */
 export class K8sModule {
diff --git a/src/app/k8s/k8s-action/K8sActionComponent.ts b/src/app/k8s/k8s-action/K8sActionComponent.ts
index a524277..f68eff6 100644
--- a/src/app/k8s/k8s-action/K8sActionComponent.ts
+++ b/src/app/k8s/k8s-action/K8sActionComponent.ts
@@ -75,12 +75,15 @@
 
   /** Delete User Account @public */
   public deleteK8s(pageType: string): void {
+    // eslint-disable-next-line security/detect-non-literal-fs-filename
     const modalRef: NgbModalRef = this.modalService.open(DeleteComponent, { backdrop: 'static' });
     modalRef.result.then((result: MODALCLOSERESPONSEDATA) => {
       if (result) {
         this.sharedService.callData();
       }
-    }).catch();
+    }).catch((): void => {
+      // Catch Navigation Error
+  });
   }
 
   /** Shows information using modalservice @public */
@@ -94,6 +97,7 @@
       pageName = 'k8s-cluster';
       title = 'PAGE.K8S.K8SCLUSTERDETAILS';
     }
+    // eslint-disable-next-line security/detect-non-literal-fs-filename
     this.modalService.open(ShowInfoComponent, { backdrop: 'static' }).componentInstance.params = {
       id: this.instanceID,
       page: pageName,
diff --git a/src/app/k8s/k8s-add-cluster/K8sAddClusterComponent.ts b/src/app/k8s/k8s-add-cluster/K8sAddClusterComponent.ts
index aa33193..bad533f 100644
--- a/src/app/k8s/k8s-add-cluster/K8sAddClusterComponent.ts
+++ b/src/app/k8s/k8s-add-cluster/K8sAddClusterComponent.ts
@@ -18,6 +18,7 @@
 /**
  * @file K8sAddClusterComponent.ts.
  */
+import { isNullOrUndefined } from 'util';
 import { HttpHeaders } from '@angular/common/http';
 import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';
 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@@ -29,7 +30,6 @@
 import * as jsyaml from 'js-yaml';
 import { RestService } from 'RestService';
 import { SharedService } from 'SharedService';
-import { isNullOrUndefined } from 'util';
 import { VimAccountDetails } from 'VimAccountModel';
 /**
  * Creating Component
@@ -209,6 +209,7 @@
     // Transform Map to json object
     const jsonDMObject: {} = {};
     this.deploymentMethodsSubmit.forEach((value: boolean, key: string): void => {
+      // eslint-disable-next-line security/detect-object-injection
       jsonDMObject[key] = value;
     });
 
@@ -232,7 +233,6 @@
     if (files && files.length === 1) {
       this.sharedService.getFileString(files, 'json').then((fileContent: string): void => {
         const getNetsJson: string = jsyaml.load(fileContent, { json: true });
-        // tslint:disable-next-line: no-backbone-get-set-outside-model
         this.k8sclusterForm.get('nets').setValue(JSON.stringify(getNetsJson));
       }).catch((err: string): void => {
         if (err === 'typeError') {
@@ -255,7 +255,6 @@
     if (files && files.length === 1) {
       this.sharedService.getFileString(files, 'yaml').then((fileContent: string): void => {
         const getCredentialsJson: string = jsyaml.load(fileContent, { json: true });
-        // tslint:disable-next-line: no-backbone-get-set-outside-model
         this.k8sclusterForm.get('credentials').setValue(JSON.stringify(getCredentialsJson));
       }).catch((err: string): void => {
         if (err === 'typeError') {
@@ -272,5 +271,4 @@
     this.fileInputCredentialsLabel.nativeElement.innerText = files[0].name;
     this.fileInputCredentials.nativeElement.value = null;
   }
-
 }
diff --git a/src/app/k8s/k8s-add-repo/K8sAddRepoComponent.ts b/src/app/k8s/k8s-add-repo/K8sAddRepoComponent.ts
index c8b96bb..700a0c3 100644
--- a/src/app/k8s/k8s-add-repo/K8sAddRepoComponent.ts
+++ b/src/app/k8s/k8s-add-repo/K8sAddRepoComponent.ts
@@ -130,5 +130,4 @@
       this.restService.handleError(error, 'post');
     });
   }
-
 }
diff --git a/src/app/k8s/k8scluster/K8sClusterComponent.ts b/src/app/k8s/k8scluster/K8sClusterComponent.ts
index 7ab7583..88a4fb6 100644
--- a/src/app/k8s/k8scluster/K8sClusterComponent.ts
+++ b/src/app/k8s/k8scluster/K8sClusterComponent.ts
@@ -180,12 +180,15 @@
 
   /** Compose new K8s Cluster Accounts @public */
   public addK8sCluster(): void {
+    // eslint-disable-next-line security/detect-non-literal-fs-filename
     const modalRef: NgbModalRef = this.modalService.open(K8sAddClusterComponent, { backdrop: 'static' });
     modalRef.result.then((result: MODALCLOSERESPONSEDATA) => {
       if (result) {
         this.sharedService.callData();
       }
-    }).catch();
+    }).catch((): void => {
+      // Catch Navigation Error
+  });
   }
 
   /**
@@ -232,5 +235,4 @@
       this.isLoadingResults = false;
     });
   }
-
 }
diff --git a/src/app/k8s/k8srepository/K8sRepositoryComponent.ts b/src/app/k8s/k8srepository/K8sRepositoryComponent.ts
index 1b6c9f7..a9626d2 100644
--- a/src/app/k8s/k8srepository/K8sRepositoryComponent.ts
+++ b/src/app/k8s/k8srepository/K8sRepositoryComponent.ts
@@ -141,12 +141,15 @@
 
   /** Compose new K8s Repo Accounts @public */
   public addK8sRepo(): void {
+    // eslint-disable-next-line security/detect-non-literal-fs-filename
     const modalRef: NgbModalRef = this.modalService.open(K8sAddRepoComponent, { backdrop: 'static' });
     modalRef.result.then((result: MODALCLOSERESPONSEDATA) => {
       if (result) {
         this.sharedService.callData();
       }
-    }).catch();
+    }).catch((): void => {
+      // Catch Navigation Error
+  });
   }
 
   /**
@@ -157,7 +160,6 @@
   }
 
   /** Generate nsData object from loop and return for the datasource @public */
-  // tslint:disable-next-line: typedef
   public generateK8sRepoData(k8sRepodata: K8SREPODATA): K8SREPODATADISPLAY {
     return {
       name: k8sRepodata.name,
@@ -194,5 +196,4 @@
       this.isLoadingResults = false;
     });
   }
-
 }
