Ver Fonte

TimeSelect: fix resetField not working when user inputs an invalid value (#10176)

Harlan há 7 anos atrás
pai
commit
b24a9ce729

+ 6 - 0
packages/date-picker/src/picker.vue

@@ -502,6 +502,8 @@ export default {
       gpuAcceleration: false
     };
     this.placement = PLACEMENT_MAP[this.align] || PLACEMENT_MAP.left;
+
+    this.$on('fieldReset', this.handleFieldReset);
   },
 
   methods: {
@@ -634,6 +636,10 @@ export default {
       this.pickerVisible = false;
     },
 
+    handleFieldReset(initialValue) {
+      this.userInput = initialValue;
+    },
+
     handleFocus() {
       const type = this.type;
 

+ 9 - 1
packages/date-picker/src/picker/time-select.js

@@ -6,8 +6,16 @@ export default {
 
   name: 'ElTimeSelect',
 
+  componentName: 'ElTimeSelect',
+
+  props: {
+    type: {
+      type: String,
+      default: 'time-select'
+    }
+  },
+
   beforeCreate() {
-    this.type = 'time-select';
     this.panel = Panel;
   }
 };

+ 2 - 0
packages/form/src/form-item.vue

@@ -227,6 +227,8 @@
            这里需要强行触发一次,刷新 validateDisabled 的值,
            确保 Select 下一次值改变时能正确触发校验 */
         this.broadcast('ElSelect', 'fieldReset');
+
+        this.broadcast('ElTimeSelect', 'fieldReset', this.initialValue);
       },
       getRules() {
         let formRules = this.form.rules;