Upgraded to bazel 3.7.2 and rules_nodejs 2.3.2

Change-Id: If53686f2475c4f367909de577b4da95de8e16768
(cherry picked from commit 436c60a1f65d3c7dbdbd664c7b0e65f5362ef24d)
diff --git a/web/gui2-fw-lib/lib/widget/detailspanel.base.ts b/web/gui2-fw-lib/lib/widget/detailspanel.base.ts
index 97efee6..e61b1f2 100644
--- a/web/gui2-fw-lib/lib/widget/detailspanel.base.ts
+++ b/web/gui2-fw-lib/lib/widget/detailspanel.base.ts
@@ -18,7 +18,7 @@
 import { WebSocketService } from '../remote/websocket.service';
 
 import { PanelBaseImpl } from './panel.base';
-import { Output, EventEmitter, Input } from '@angular/core';
+import { InjectionToken, Inject, Component, Output, EventEmitter, Input } from '@angular/core';
 
 /**
  * A generic model of the data returned from the *DetailsResponse
@@ -27,6 +27,8 @@
     details: any;
 }
 
+export const TAG = new InjectionToken<string>('tag');
+
 /**
  * Extends the PanelBase abstract class specifically for showing details
  *
@@ -35,6 +37,9 @@
  *
  * This replaces the detailspanel service in the old gui
  */
+@Component({
+    template: ''
+})
 export abstract class DetailsPanelBaseImpl extends PanelBaseImpl {
 
     @Input() id: string;
@@ -51,7 +56,7 @@
         protected fs: FnService,
         protected log: LogService,
         protected wss: WebSocketService,
-        protected tag: string,
+        @Inject(TAG) protected tag: string,
     ) {
         super(fs, log);
         this.root = tag + 's';