From c8204f83f31bca5228b303484eea230987adc4d9 Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@irstea.fr>
Date: Wed, 18 Jul 2018 12:48:27 +0200
Subject: [PATCH] Closes #83

---
 .../generic-select.component.html             |  2 +-
 .../generic-select.component.ts               | 24 ++++++++++++++-----
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html
index 3506521b3..53bcde259 100644
--- a/src/app/components/generic-select/generic-select.component.html
+++ b/src/app/components/generic-select/generic-select.component.html
@@ -1,4 +1,4 @@
-<div class="btn-group" dropdown (click)="onSelect($event)">
+<div class="btn-group" dropdown (selected)="onSelect($event)">
     <button dropdownToggle class="btn btn-primary dropdown-toggle waves-light my-1" type="button" mdbRippleRadius>
         {{currentLabel}}
     </button>
diff --git a/src/app/components/generic-select/generic-select.component.ts b/src/app/components/generic-select/generic-select.component.ts
index 8e457e2dd..119d7b93c 100644
--- a/src/app/components/generic-select/generic-select.component.ts
+++ b/src/app/components/generic-select/generic-select.component.ts
@@ -15,12 +15,14 @@ import { BaseComponent } from "../base/base.component";
 */
 
 export abstract class GenericSelectComponent<T> {
-    private get currentLabel(): string {
-        for (let e of this.entries)
-            if (e == this.selectedValue)
-                return this.entryLabel(e);
 
-        return "<no selection>";
+    private _currentLabel: string;
+
+    private get currentLabel(): string {
+        if (this._currentLabel === undefined) {
+            this._currentLabel = this.selectedLabel;
+        }
+        return this._currentLabel;
     }
 
     /**
@@ -28,8 +30,18 @@ export abstract class GenericSelectComponent<T> {
      */
     private onSelect(event: any) {
         const val = event.target.value;
-        if (val != undefined)
+        if (val !== undefined && val !== "") {
             this.selectedValue = val;
+            this._currentLabel = this.selectedLabel;
+        }
+    }
+
+    private get selectedLabel(): string {
+        for (const e of this.entries) {
+            if (e === this.selectedValue) {
+                return this.entryLabel(e);
+            }
+        }
     }
 
     /**
-- 
GitLab