diff --git a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts
index ca3b547..b0489df 100644
--- a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts
+++ b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.spec.ts
@@ -62,6 +62,13 @@
     expect(component).toBeTruthy();
   });
 
+  it('should extend the setItems in _extendFilterItem when filterWord is test', () => {
+    const filterItems = { test: { checked: true } };
+    (component as any)._filteredItems = filterItems;
+    (component as any)._extendFilteredItem('test');
+    expect('test' in component.setItems).toBeTruthy();
+  });
+
   it('should filterCheckboxList with setItems', () => {
     component.setItems = [
       { AAA: {}, checked: true },
diff --git a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
index c26a093..e6db916 100644
--- a/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
+++ b/projects/grid-failure-information-app/src/app/shared/filters/ag-grid/set-filter/set-filter.component.ts
@@ -42,17 +42,17 @@
       .toLowerCase()
       .split(' ')
       .forEach(filterWord => {
-        for (var itemKey in this.setItems) {
-          if (!this._contains(itemKey, filterWord)) {
-            this._filteredItems[itemKey] = this.setItems[itemKey];
-            delete this.setItems[itemKey];
-          } else {
-            for (var filteredItem in this._filteredItems) {
-              if (this._contains(filteredItem, filterWord)) {
-                this.setItems[filteredItem] = this._filteredItems[filteredItem];
-              }
+        if (Object.keys(this.setItems).length > 0) {
+          for (var itemKey in this.setItems) {
+            if (!this._contains(itemKey, filterWord)) {
+              this._filteredItems[itemKey] = this.setItems[itemKey];
+              delete this.setItems[itemKey];
+            } else {
+              this._extendFilteredItem(filterWord);
             }
           }
+        } else {
+          this._extendFilteredItem(filterWord);
         }
         if (this.filterText.length !== 0) {
           this.selectAllChecked = false;
@@ -63,6 +63,14 @@
     this._params.filterChangedCallback();
   }
 
+  private _extendFilteredItem(filterWord: string): void {
+    for (var filteredItem in this._filteredItems) {
+      if (this._contains(filteredItem, filterWord)) {
+        this.setItems[filteredItem] = this._filteredItems[filteredItem];
+      }
+    }
+  }
+
   private _contains(sourceText: string, subString: string): boolean {
     return sourceText.toString().toLowerCase().indexOf(subString.toString().toLowerCase()) >= 0;
   }
