1- import type { PropType , ExtractPropTypes , ComputedRef } from 'vue' ;
1+ import type { PropType , ExtractPropTypes , ComputedRef , Ref } from 'vue' ;
22import {
33 watch ,
44 defineComponent ,
@@ -32,7 +32,7 @@ const ValidateStatuses = tuple('success', 'warning', 'error', 'validating', '');
3232export type ValidateStatus = typeof ValidateStatuses [ number ] ;
3333
3434export interface FieldExpose {
35- fieldValue : ComputedRef < any > ;
35+ fieldValue : Ref < any > ;
3636 fieldId : ComputedRef < any > ;
3737 fieldName : ComputedRef < any > ;
3838 resetField : ( ) => void ;
@@ -132,13 +132,15 @@ export default defineComponent({
132132 return formName ? `${ formName } _${ mergedId } ` : `${ defaultItemNamePrefixCls } _${ mergedId } ` ;
133133 }
134134 } ) ;
135- const fieldValue = computed ( ( ) => {
135+ const getNewFieldValue = ( ) => {
136136 const model = formContext . model . value ;
137137 if ( ! model || ! fieldName . value ) {
138138 return ;
139+ } else {
140+ return getPropByPath ( model , namePath . value , true ) . v ;
139141 }
140- return getPropByPath ( model , namePath . value , true ) . v ;
141- } ) ;
142+ } ;
143+ const fieldValue = computed ( ( ) => getNewFieldValue ( ) ) ;
142144
143145 const initialValue = ref ( cloneDeep ( fieldValue . value ) ) ;
144146 const mergedValidateTrigger = computed ( ( ) => {
@@ -184,9 +186,20 @@ export default defineComponent({
184186 watchEffect ( ( ) => {
185187 validateState . value = props . validateStatus ;
186188 } ) ;
187-
189+ const messageVariables = computed ( ( ) => {
190+ let variables : Record < string , string > = { } ;
191+ if ( typeof props . label === 'string' ) {
192+ variables . label = props . label ;
193+ } else if ( props . name ) {
194+ variables . label = String ( name ) ;
195+ }
196+ if ( props . messageVariables ) {
197+ variables = { ...variables , ...props . messageVariables } ;
198+ }
199+ return variables ;
200+ } ) ;
188201 const validateRules = ( options : ValidateOptions ) => {
189- const { validateFirst = false , messageVariables } = props ;
202+ const { validateFirst = false } = props ;
190203 const { triggerName } = options || { } ;
191204
192205 let filteredRules = rulesRef . value ;
@@ -207,9 +220,12 @@ export default defineComponent({
207220 namePath . value ,
208221 fieldValue . value ,
209222 filteredRules as RuleObject [ ] ,
210- options ,
223+ {
224+ validateMessages : formContext . validateMessages . value ,
225+ ...options ,
226+ } ,
211227 validateFirst ,
212- messageVariables ,
228+ messageVariables . value ,
213229 ) ;
214230 validateState . value = 'validating' ;
215231 errors . value = [ ] ;
@@ -285,12 +301,6 @@ export default defineComponent({
285301 resetField,
286302 } ) ;
287303
288- // instead useProvideFormItemContext onFieldChange
289- watch ( fieldValue , ( ) => {
290- if ( props . autoLink ) {
291- onFieldChange ( ) ;
292- }
293- } ) ;
294304 useProvideFormItemContext (
295305 {
296306 id : fieldId ,
@@ -300,9 +310,9 @@ export default defineComponent({
300310 }
301311 } ,
302312 onFieldChange : ( ) => {
303- // if (props.autoLink) {
304- // onFieldChange();
305- // }
313+ if ( props . autoLink ) {
314+ onFieldChange ( ) ;
315+ }
306316 } ,
307317 clearValidate,
308318 } ,
0 commit comments