This is an automated email from the ASF dual-hosted git repository.

gaoxingcun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new ca93a658c [improve] Implement cascading parameter list for SNMP 
protocol (#1976)
ca93a658c is described below

commit ca93a658cb953024124ed1088ae20122ec30ad09
Author: Zhang Yuxuan <[email protected]>
AuthorDate: Mon May 13 15:30:26 2024 +0800

    [improve] Implement cascading parameter list for SNMP protocol (#1976)
---
 .../common/entity/manager/ParamDefine.java         |   7 +
 .../src/main/resources/define/app-cisco_switch.yml |  20 +-
 .../src/main/resources/define/app-h3c_switch.yml   |  20 +-
 .../src/main/resources/define/app-hpe_switch.yml   |  20 +-
 .../main/resources/define/app-huawei_switch.yml    |  20 +-
 .../main/resources/define/app-tplink_switch.yml    |  20 +-
 manager/src/main/resources/define/app-windows.yml  |   8 +-
 web-app/src/app/pojo/Param.ts                      |   2 +
 web-app/src/app/pojo/ParamDefine.ts                |   2 +
 .../monitor-edit/monitor-edit.component.html       | 251 +++++++++++----------
 .../monitor/monitor-edit/monitor-edit.component.ts |  16 ++
 .../monitor/monitor-new/monitor-new.component.html | 249 ++++++++++----------
 .../monitor/monitor-new/monitor-new.component.ts   |  17 ++
 13 files changed, 387 insertions(+), 265 deletions(-)

diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
index 38f549f44..928ad2266 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/ParamDefine.java
@@ -186,6 +186,13 @@ public class ParamDefine {
     @LastModifiedDate
     private LocalDateTime gmtUpdate;
 
+    /**
+     *  Depends on which parameters
+     */
+    @Schema(title = "Depends on which parameters", example = "{0, 1}", 
accessMode = READ_WRITE)
+    @Convert(converter = JsonStringListAttributeConverter.class)
+    private List<Object> parent;
+
     /**
      * Parameter option configuration
      */
diff --git a/manager/src/main/resources/define/app-cisco_switch.yml 
b/manager/src/main/resources/define/app-cisco_switch.yml
index 9d3cc72ab..04dd6cc41 100644
--- a/manager/src/main/resources/define/app-cisco_switch.yml
+++ b/manager/src/main/resources/define/app-cisco_switch.yml
@@ -56,7 +56,7 @@ params:
     # default value
     defaultValue: 161
   # field-param field key
-  - field: version
+  - field: snmpVersion
     # name-param field display i18n name
     name:
       zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp community for v1 v2c'
+    # dependent parameter values list
+    parent: [ 0,1 ]
   # field-param field key
   - field: username
     # name-param field display i18n name
@@ -101,6 +103,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp username for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
   # field-param field key
   - field: contextName
     # name-param field display i18n name
@@ -115,6 +119,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp contextName for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPassphrase
     # name-param field display i18n name
@@ -129,6 +135,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPasswordEncryption
     # name-param field display i18n name
@@ -145,6 +153,8 @@ params:
         value: 0
       - label: SHA1
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPassphrase
     # name-param field display i18n name
@@ -159,6 +169,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPasswordEncryption
     # name-param field display i18n name
@@ -175,6 +187,8 @@ params:
         value: 0
       - label: AES128
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: timeout
     # name-param field display i18n name
@@ -261,7 +275,7 @@ metrics:
       # snmp community
       community: ^_^community^_^
       # snmp version
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       # snmp operation: get, walk
       operation: get
       # metrics oids: metric_name - oid_value
@@ -389,7 +403,7 @@ metrics:
       contextName: ^_^contextName^_^
       timeout: ^_^timeout^_^
       community: ^_^community^_^
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       operation: walk
       oids:
         ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-h3c_switch.yml 
b/manager/src/main/resources/define/app-h3c_switch.yml
index ed21729c0..cc4d852f4 100644
--- a/manager/src/main/resources/define/app-h3c_switch.yml
+++ b/manager/src/main/resources/define/app-h3c_switch.yml
@@ -56,7 +56,7 @@ params:
     # default value
     defaultValue: 161
   # field-param field key
-  - field: version
+  - field: snmpVersion
     # name-param field display i18n name
     name:
       zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp community for v1 v2c'
+    # dependent parameter values list
+    parent: [ 0,1 ]
   # field-param field key
   - field: username
     # name-param field display i18n name
@@ -101,6 +103,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp username for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
   # field-param field key
   - field: contextName
     # name-param field display i18n name
@@ -115,6 +119,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp contextName for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPassphrase
     # name-param field display i18n name
@@ -129,6 +135,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPasswordEncryption
     # name-param field display i18n name
@@ -145,6 +153,8 @@ params:
         value: 0
       - label: SHA1
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPassphrase
     # name-param field display i18n name
@@ -159,6 +169,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPasswordEncryption
     # name-param field display i18n name
@@ -175,6 +187,8 @@ params:
         value: 0
       - label: AES128
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: timeout
     # name-param field display i18n name
@@ -261,7 +275,7 @@ metrics:
       # snmp 团体字
       community: ^_^community^_^
       # snmp version
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       # snmp operation: get, walk
       operation: get
       # metrics oids: metric_name - oid_value
@@ -388,7 +402,7 @@ metrics:
       contextName: ^_^contextName^_^
       timeout: ^_^timeout^_^
       community: ^_^community^_^
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       operation: walk
       oids:
         ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-hpe_switch.yml 
b/manager/src/main/resources/define/app-hpe_switch.yml
index ccf7b67e3..19bd6a04a 100644
--- a/manager/src/main/resources/define/app-hpe_switch.yml
+++ b/manager/src/main/resources/define/app-hpe_switch.yml
@@ -56,7 +56,7 @@ params:
     # default value
     defaultValue: 161
   # field-param field key
-  - field: version
+  - field: snmpVersion
     # name-param field display i18n name
     name:
       zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp community for v1 v2c'
+    # dependent parameter values list
+    parent: [ 0,1 ]
   # field-param field key
   - field: username
     # name-param field display i18n name
@@ -101,6 +103,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp username for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
   # field-param field key
   - field: contextName
     # name-param field display i18n name
@@ -115,6 +119,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp contextName for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPassphrase
     # name-param field display i18n name
@@ -129,6 +135,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPasswordEncryption
     # name-param field display i18n name
@@ -145,6 +153,8 @@ params:
         value: 0
       - label: SHA1
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPassphrase
     # name-param field display i18n name
@@ -159,6 +169,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPasswordEncryption
     # name-param field display i18n name
@@ -175,6 +187,8 @@ params:
         value: 0
       - label: AES128
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: timeout
     # name-param field display i18n name
@@ -261,7 +275,7 @@ metrics:
       # snmp 团体字
       community: ^_^community^_^
       # snmp version
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       # snmp operation: get, walk
       operation: get
       # metrics oids: metric_name - oid_value
@@ -389,7 +403,7 @@ metrics:
       contextName: ^_^contextName^_^
       timeout: ^_^timeout^_^
       community: ^_^community^_^
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       operation: walk
       oids:
         ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-huawei_switch.yml 
b/manager/src/main/resources/define/app-huawei_switch.yml
index f20f52163..812a89562 100644
--- a/manager/src/main/resources/define/app-huawei_switch.yml
+++ b/manager/src/main/resources/define/app-huawei_switch.yml
@@ -56,7 +56,7 @@ params:
     # default value
     defaultValue: 161
   # field-param field key
-  - field: version
+  - field: snmpVersion
     # name-param field display i18n name
     name:
       zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp community for v1 v2c'
+    # dependent parameter values list
+    parent: [ 0,1 ]
   # field-param field key
   - field: username
     # name-param field display i18n name
@@ -101,6 +103,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp username for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
   # field-param field key
   - field: contextName
     # name-param field display i18n name
@@ -115,6 +119,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp contextName for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPassphrase
     # name-param field display i18n name
@@ -129,6 +135,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPasswordEncryption
     # name-param field display i18n name
@@ -145,6 +153,8 @@ params:
         value: 0
       - label: SHA1
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPassphrase
     # name-param field display i18n name
@@ -159,6 +169,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPasswordEncryption
     # name-param field display i18n name
@@ -175,6 +187,8 @@ params:
         value: 0
       - label: AES128
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: timeout
     # name-param field display i18n name
@@ -260,7 +274,7 @@ metrics:
       # snmp community
       community: ^_^community^_^
       # snmp version
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       # snmp operation: get, walk
       operation: get
       # metrics oids: metric_name - oid_value
@@ -387,7 +401,7 @@ metrics:
       contextName: ^_^contextName^_^
       timeout: ^_^timeout^_^
       community: ^_^community^_^
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       operation: walk
       oids:
         ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-tplink_switch.yml 
b/manager/src/main/resources/define/app-tplink_switch.yml
index 797a39411..1b16d153a 100644
--- a/manager/src/main/resources/define/app-tplink_switch.yml
+++ b/manager/src/main/resources/define/app-tplink_switch.yml
@@ -56,7 +56,7 @@ params:
     # default value
     defaultValue: 161
   # field-param field key
-  - field: version
+  - field: snmpVersion
     # name-param field display i18n name
     name:
       zh-CN: SNMP 版本
@@ -87,6 +87,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp community for v1 v2c'
+    # dependent parameter values list
+    parent: [ 0,1 ]
   # field-param field key
   - field: username
     # name-param field display i18n name
@@ -101,6 +103,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp username for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
   # field-param field key
   - field: contextName
     # name-param field display i18n name
@@ -115,6 +119,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp contextName for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPassphrase
     # name-param field display i18n name
@@ -129,6 +135,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: authPasswordEncryption
     # name-param field display i18n name
@@ -145,6 +153,8 @@ params:
         value: 0
       - label: SHA1
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPassphrase
     # name-param field display i18n name
@@ -159,6 +169,8 @@ params:
     required: false
     # param field input placeholder
     placeholder: 'Snmp authPassword for v3'
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: privPasswordEncryption
     # name-param field display i18n name
@@ -175,6 +187,8 @@ params:
         value: 0
       - label: AES128
         value: 1
+    # dependent parameter values list
+    parent: [ 3 ]
     # field-param field key
   - field: timeout
     # name-param field display i18n name
@@ -260,7 +274,7 @@ metrics:
       # snmp community
       community: ^_^community^_^
       # snmp version
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       # snmp operation: get, walk
       operation: get
       # metrics oids: metric_name - oid_value
@@ -387,7 +401,7 @@ metrics:
       contextName: ^_^contextName^_^
       timeout: ^_^timeout^_^
       community: ^_^community^_^
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       operation: walk
       oids:
         ifIndex: 1.3.6.1.2.1.2.2.1.1
diff --git a/manager/src/main/resources/define/app-windows.yml 
b/manager/src/main/resources/define/app-windows.yml
index 296e604b5..cfc86d199 100644
--- a/manager/src/main/resources/define/app-windows.yml
+++ b/manager/src/main/resources/define/app-windows.yml
@@ -56,7 +56,7 @@ params:
     # default value
     defaultValue: 161
   # field-param field key
-  - field: version
+  - field: snmpVersion
     # name-param field display i18n name
     name:
       zh-CN: SNMP 版本
@@ -70,7 +70,7 @@ params:
       - label: SNMPv1
         value: 0
       - label: SNMPv2c
-        value: 1
+        value: 3
   # field-param field key
   - field: community
     # name-param field display i18n name
@@ -85,6 +85,8 @@ params:
     required: true
     # param field input placeholder
     placeholder: 'Snmp community for v1 v2c'
+    # dependent parameter values list
+    parent: [ 0,1 ]
   # field-param field key
   - field: timeout
     # name-param field display i18n name
@@ -181,7 +183,7 @@ metrics:
       port: ^_^port^_^
       timeout: ^_^timeout^_^
       community: ^_^community^_^
-      version: ^_^version^_^
+      version: ^_^snmpVersion^_^
       operation: walk
       oids:
         hrSWRunIndex: 1.3.6.1.2.1.25.4.2.1.1
diff --git a/web-app/src/app/pojo/Param.ts b/web-app/src/app/pojo/Param.ts
index 4b9a856f8..1914f3bc8 100644
--- a/web-app/src/app/pojo/Param.ts
+++ b/web-app/src/app/pojo/Param.ts
@@ -22,4 +22,6 @@ export class Param {
   field!: string;
   type: number | undefined;
   paramValue: any;
+  // 是否显示
+  display: boolean = true;
 }
diff --git a/web-app/src/app/pojo/ParamDefine.ts 
b/web-app/src/app/pojo/ParamDefine.ts
index 4e14401cd..8940608a7 100644
--- a/web-app/src/app/pojo/ParamDefine.ts
+++ b/web-app/src/app/pojo/ParamDefine.ts
@@ -33,4 +33,6 @@ export class ParamDefine {
   valueAlias!: string;
   // 此参数是否隐藏 即默认不显示, 在高级设置区显示
   hide: boolean = false;
+  // 依赖的上级参数列表
+  parent: string | undefined;
 }
diff --git 
a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html 
b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html
index d2221e902..85e44bd6f 100644
--- a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html
+++ b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html
@@ -45,141 +45,144 @@
         </nz-form-control>
       </nz-form-item>
 
-      <nz-form-item *ngFor="let paramDefine of paramDefines; let i = index">
-        <nz-form-label
-          *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text' 
|| paramDefine.type === 'array')"
-          nzSpan="7"
-          [nzRequired]="paramDefine.required"
-          [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control
-          *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text' 
|| paramDefine.type === 'array')"
-          nzSpan="8"
-          [nzErrorTip]="'validation.required' | i18n"
-        >
-          <input
-            nz-input
-            [(ngModel)]="params[i].paramValue"
-            [required]="paramDefine.required"
-            [name]="paramDefine.field"
-            [type]="paramDefine.type"
-            [id]="paramDefine.field"
-            [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : 
''"
-          />
-        </nz-form-control>
-
-        <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <textarea
-            nz-input
-            [(ngModel)]="params[i].paramValue"
-            [required]="paramDefine.required"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-            [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : 
''"
-            rows="8"
-          ></textarea>
-        </nz-form-control>
-
-        <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+      <ng-container *ngFor="let paramDefine of paramDefines; let i = index">
+        <nz-form-item *ngIf="params[i].display">
+          <nz-form-label
+            *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 
'text' || paramDefine.type === 'array')"
+            nzSpan="7"
+            [nzRequired]="paramDefine.required"
+            [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control
+            *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 
'text' || paramDefine.type === 'array')"
+            nzSpan="8"
+            [nzErrorTip]="'validation.required' | i18n"
+          >
             <input
-              [type]="passwordVisible ? 'text' : 'password'"
               nz-input
-              placeholder="input password"
-              [required]="paramDefine.required"
               [(ngModel)]="params[i].paramValue"
-              [id]="paramDefine.field"
+              [required]="paramDefine.required"
               [name]="paramDefine.field"
+              [type]="paramDefine.type"
+              [id]="paramDefine.field"
               [placeholder]="paramDefine.placeholder ? paramDefine.placeholder 
: ''"
             />
-          </nz-input-group>
-          <ng-template #suffixTemplate>
-            <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" 
(click)="passwordVisible = !passwordVisible"></i>
-          </ng-template>
-        </nz-form-control>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-input-number
-            [(ngModel)]="params[i].paramValue"
-            [required]="paramDefine.required"
-            [nzMin]="-1000"
-            [nzMax]="65535"
-            [nzStep]="1"
-            [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder 
: ''"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-          ></nz-input-number>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <textarea
+              nz-input
+              [(ngModel)]="params[i].paramValue"
+              [required]="paramDefine.required"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+              [placeholder]="paramDefine.placeholder ? paramDefine.placeholder 
: ''"
+              rows="8"
+            ></textarea>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-switch
-            [(ngModel)]="params[i].paramValue"
-            (ngModelChange)="onParamBooleanChanged($event, paramDefine.field)"
-            [required]="paramDefine.required"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-          ></nz-switch>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+              <input
+                [type]="passwordVisible ? 'text' : 'password'"
+                nz-input
+                placeholder="input password"
+                [required]="paramDefine.required"
+                [(ngModel)]="params[i].paramValue"
+                [id]="paramDefine.field"
+                [name]="paramDefine.field"
+                [placeholder]="paramDefine.placeholder ? 
paramDefine.placeholder : ''"
+              />
+            </nz-input-group>
+            <ng-template #suffixTemplate>
+              <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" 
(click)="passwordVisible = !passwordVisible"></i>
+            </ng-template>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-radio-group
-            [(ngModel)]="params[i].paramValue"
-            [required]="paramDefine.required"
-            nzButtonStyle="solid"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-          >
-            <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let 
optionItem of paramDefine.options">
-              {{ optionItem.label }}
-            </label>
-          </nz-radio-group>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-input-number
+              [(ngModel)]="params[i].paramValue"
+              [required]="paramDefine.required"
+              [nzMin]="-1000"
+              [nzMax]="65535"
+              [nzStep]="1"
+              [nzPlaceHolder]="paramDefine.placeholder ? 
paramDefine.placeholder : ''"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+            ></nz-input-number>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <app-key-value-input
-            [(value)]="params[i].paramValue"
-            [id]="paramDefine.field"
-            keyAlias="Header Name"
-            valueAlias="Header Value"
-          ></app-key-value-input>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-switch
+              [(ngModel)]="params[i].paramValue"
+              (ngModelChange)="onParamBooleanChanged($event, 
paramDefine.field)"
+              [required]="paramDefine.required"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+            ></nz-switch>
+          </nz-form-control>
 
-        <nz-form-label
-          *ngIf="paramDefine.type === 'metrics-field'"
-          nzSpan="7"
-          [nzRequired]="paramDefine.required"
-          [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'metrics-field'" 
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
-          <app-metrics-field-input
-            [(value)]="params[i].paramValue"
-            [id]="paramDefine.field"
-            [FieldAlias]="'Field'"
-            [UnitAlias]="'Unit'"
-            [TypeAlias]="'Type'"
-          ></app-metrics-field-input>
-        </nz-form-control>
-      </nz-form-item>
+          <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-radio-group
+              [(ngModel)]="params[i].paramValue"
+              [required]="paramDefine.required"
+              nzButtonStyle="solid"
+              (ngModelChange)="onSnmpVersionChanged($event, paramDefine.field)"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+            >
+              <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let 
optionItem of paramDefine.options">
+                {{ optionItem.label }}
+              </label>
+            </nz-radio-group>
+          </nz-form-control>
+
+          <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <app-key-value-input
+              [(value)]="params[i].paramValue"
+              [id]="paramDefine.field"
+              keyAlias="Header Name"
+              valueAlias="Header Value"
+            ></app-key-value-input>
+          </nz-form-control>
+
+          <nz-form-label
+            *ngIf="paramDefine.type === 'metrics-field'"
+            nzSpan="7"
+            [nzRequired]="paramDefine.required"
+            [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'metrics-field'" 
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+            <app-metrics-field-input
+              [(value)]="params[i].paramValue"
+              [id]="paramDefine.field"
+              [FieldAlias]="'Field'"
+              [UnitAlias]="'Unit'"
+              [TypeAlias]="'Type'"
+            ></app-metrics-field-input>
+          </nz-form-control>
+        </nz-form-item>
+      </ng-container>
 
       <nz-collapse [nzGhost]="true" style="margin-bottom: 16px">
         <nz-collapse-panel [nzHeader]="extraColHeader" [nzShowArrow]="false">
diff --git 
a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts 
b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts
index abc1ba48d..d13a1c967 100644
--- a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts
+++ b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts
@@ -164,6 +164,10 @@ export class MonitorEditComponent implements OnInit {
                 this.hostName = define.name;
               }
             });
+            let paramDefine = this.paramDefines.find(param => param.field === 
'snmpVersion');
+            if (paramDefine) {
+              
this.onSnmpVersionChanged(this.paramValueMap.get(paramDefine.field)?.paramValue,
 paramDefine.field);
+            }
           } else {
             console.warn(message.msg);
           }
@@ -201,6 +205,18 @@ export class MonitorEditComponent implements OnInit {
     }
   }
 
+  onSnmpVersionChanged(snmpVersion: string, field: string) {
+    // 对不同snmp版本需要的参数进行动态展示
+    if (field === 'snmpVersion') {
+      this.paramDefines.forEach((paramDefine, index) => {
+        this.params[index].display = true;
+        if (paramDefine.parent != null && 
!paramDefine.parent.toString().includes(snmpVersion)) {
+          this.params[index].display = false;
+        }
+      });
+    }
+  }
+
   onSubmit(formGroup: FormGroup) {
     if (formGroup.invalid) {
       Object.values(formGroup.controls).forEach(control => {
diff --git 
a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html 
b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html
index ec3493774..0a0398b1d 100644
--- a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html
+++ b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html
@@ -54,141 +54,144 @@
         </nz-form-control>
       </nz-form-item>
 
-      <nz-form-item *ngFor="let paramDefine of paramDefines; let i = index">
-        <nz-form-label
-          *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text' 
|| paramDefine.type === 'array')"
-          nzSpan="7"
-          [nzRequired]="paramDefine.required"
-          [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control
-          *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 'text' 
|| paramDefine.type === 'array')"
-          nzSpan="8"
-          [nzErrorTip]="'validation.required' | i18n"
-        >
-          <input
-            nz-input
-            [required]="paramDefine.required"
-            [(ngModel)]="params[i].paramValue"
-            [name]="paramDefine.field"
-            [type]="paramDefine.type"
-            [id]="paramDefine.field"
-            [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : 
''"
-          />
-        </nz-form-control>
-
-        <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <textarea
-            nz-input
-            [(ngModel)]="params[i].paramValue"
-            [required]="paramDefine.required"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-            [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : 
''"
-            rows="8"
-          ></textarea>
-        </nz-form-control>
-
-        <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+      <ng-container *ngFor="let paramDefine of paramDefines; let i = index">
+        <nz-form-item *ngIf="params[i].display">
+          <nz-form-label
+            *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 
'text' || paramDefine.type === 'array')"
+            nzSpan="7"
+            [nzRequired]="paramDefine.required"
+            [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control
+            *ngIf="paramDefine.field !== 'host' && (paramDefine.type === 
'text' || paramDefine.type === 'array')"
+            nzSpan="8"
+            [nzErrorTip]="'validation.required' | i18n"
+          >
             <input
-              [type]="passwordVisible ? 'text' : 'password'"
               nz-input
               [required]="paramDefine.required"
-              placeholder="input password"
               [(ngModel)]="params[i].paramValue"
-              [id]="paramDefine.field"
               [name]="paramDefine.field"
+              [type]="paramDefine.type"
+              [id]="paramDefine.field"
               [placeholder]="paramDefine.placeholder ? paramDefine.placeholder 
: ''"
             />
-          </nz-input-group>
-          <ng-template #suffixTemplate>
-            <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" 
(click)="passwordVisible = !passwordVisible"></i>
-          </ng-template>
-        </nz-form-control>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-input-number
-            [(ngModel)]="params[i].paramValue"
-            [required]="paramDefine.required"
-            [nzMin]="getNumber(paramDefine.range || '', 0) || -1000"
-            [nzMax]="getNumber(paramDefine.range || '', 1) || 65535"
-            [nzStep]="1"
-            [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder 
: ''"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-          ></nz-input-number>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <textarea
+              nz-input
+              [(ngModel)]="params[i].paramValue"
+              [required]="paramDefine.required"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+              [placeholder]="paramDefine.placeholder ? paramDefine.placeholder 
: ''"
+              rows="8"
+            ></textarea>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-switch
-            [(ngModel)]="params[i].paramValue"
-            (ngModelChange)="onParamBooleanChanged($event, paramDefine.field)"
-            [required]="paramDefine.required"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-          ></nz-switch>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+              <input
+                [type]="passwordVisible ? 'text' : 'password'"
+                nz-input
+                [required]="paramDefine.required"
+                placeholder="input password"
+                [(ngModel)]="params[i].paramValue"
+                [id]="paramDefine.field"
+                [name]="paramDefine.field"
+                [placeholder]="paramDefine.placeholder ? 
paramDefine.placeholder : ''"
+              />
+            </nz-input-group>
+            <ng-template #suffixTemplate>
+              <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" 
(click)="passwordVisible = !passwordVisible"></i>
+            </ng-template>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <nz-radio-group
-            [(ngModel)]="params[i].paramValue"
-            nzButtonStyle="solid"
-            [required]="paramDefine.required"
-            [name]="paramDefine.field"
-            [id]="paramDefine.field"
-          >
-            <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let 
optionItem of paramDefine.options">
-              {{ optionItem.label }}
-            </label>
-          </nz-radio-group>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-input-number
+              [(ngModel)]="params[i].paramValue"
+              [required]="paramDefine.required"
+              [nzMin]="getNumber(paramDefine.range || '', 0) || -1000"
+              [nzMax]="getNumber(paramDefine.range || '', 1) || 65535"
+              [nzStep]="1"
+              [nzPlaceHolder]="paramDefine.placeholder ? 
paramDefine.placeholder : ''"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+            ></nz-input-number>
+          </nz-form-control>
 
-        <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
-          <app-key-value-input
-            [(value)]="params[i].paramValue"
-            [id]="paramDefine.field"
-            [keyAlias]="paramDefine.keyAlias ? paramDefine.keyAlias : 'Name'"
-            [valueAlias]="paramDefine.valueAlias ? paramDefine.valueAlias : 
'Value'"
-          ></app-key-value-input>
-        </nz-form-control>
+          <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-switch
+              [(ngModel)]="params[i].paramValue"
+              (ngModelChange)="onParamBooleanChanged($event, 
paramDefine.field)"
+              [required]="paramDefine.required"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+            ></nz-switch>
+          </nz-form-control>
 
-        <nz-form-label
-          *ngIf="paramDefine.type === 'metrics-field'"
-          nzSpan="7"
-          [nzRequired]="paramDefine.required"
-          [nzFor]="paramDefine.field"
-          >{{ paramDefine.name }}
-        </nz-form-label>
-        <nz-form-control *ngIf="paramDefine.type === 'metrics-field'" 
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
-          <app-metrics-field-input
-            [(value)]="params[i].paramValue"
-            [id]="paramDefine.field"
-            [FieldAlias]="'Field'"
-            [UnitAlias]="'Unit'"
-            [TypeAlias]="'Type'"
-          ></app-metrics-field-input>
-        </nz-form-control>
-      </nz-form-item>
+          <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <nz-radio-group
+              [(ngModel)]="params[i].paramValue"
+              nzButtonStyle="solid"
+              (ngModelChange)="onSnmpVersionChanged($event, paramDefine.field)"
+              [required]="paramDefine.required"
+              [name]="paramDefine.field"
+              [id]="paramDefine.field"
+            >
+              <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let 
optionItem of paramDefine.options">
+                {{ optionItem.label }}
+              </label>
+            </nz-radio-group>
+          </nz-form-control>
+
+          <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7" 
[nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" 
[nzErrorTip]="'validation.required' | i18n">
+            <app-key-value-input
+              [(value)]="params[i].paramValue"
+              [id]="paramDefine.field"
+              [keyAlias]="paramDefine.keyAlias ? paramDefine.keyAlias : 'Name'"
+              [valueAlias]="paramDefine.valueAlias ? paramDefine.valueAlias : 
'Value'"
+            ></app-key-value-input>
+          </nz-form-control>
+
+          <nz-form-label
+            *ngIf="paramDefine.type === 'metrics-field'"
+            nzSpan="7"
+            [nzRequired]="paramDefine.required"
+            [nzFor]="paramDefine.field"
+            >{{ paramDefine.name }}
+          </nz-form-label>
+          <nz-form-control *ngIf="paramDefine.type === 'metrics-field'" 
nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+            <app-metrics-field-input
+              [(value)]="params[i].paramValue"
+              [id]="paramDefine.field"
+              [FieldAlias]="'Field'"
+              [UnitAlias]="'Unit'"
+              [TypeAlias]="'Type'"
+            ></app-metrics-field-input>
+          </nz-form-control>
+        </nz-form-item>
+      </ng-container>
 
       <nz-collapse [nzGhost]="true" style="margin-bottom: 16px">
         <nz-collapse-panel [nzHeader]="extraColHeader" [nzShowArrow]="false">
diff --git 
a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts 
b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts
index f3ed5c756..4d1c01bb9 100644
--- a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts
+++ b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts
@@ -179,6 +179,23 @@ export class MonitorNewComponent implements OnInit {
     }
   }
 
+  onSnmpVersionChanged(snmpVersion: string, field: string) {
+    // 对不同snmp版本需要的参数进行动态展示
+    if (field === 'snmpVersion') {
+      this.paramDefines.forEach((paramDefine, index) => {
+        this.params[index].display = true;
+        if (paramDefine.parent != undefined && 
!paramDefine.parent.toString().includes(snmpVersion)) {
+          this.params[index].display = false;
+        }
+      });
+    }
+    this.refreshParams();
+  }
+
+  refreshParams() {
+    this.params = [...this.params];
+  }
+
   onSubmit(formGroup: FormGroup) {
     if (formGroup.invalid) {
       Object.values(formGroup.controls).forEach(control => {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to