查看过网上各路大神做法,多种尝试还是没办法实现我的需求(#^.^#) ……
最终还是要看看官方文档(^-^),api: ()=>Promise<{ label: string; value: string; disabled?: boolean }[]>,这是可链式调用,于是有如下代码:
export interface AreaRespVO {
id?: number
name?: string
}
export const updateFormSchema: FormSchema[] = [
{
label: '省级',
field: 'provinceCode',
component: 'ApiSelect',
componentProps: ({formActionType, formModel}) => {
return {
numberToString: true,
// 请求接口
api: () => getAreaChild().then((data: AreaRespVO[]) => {
const {updateSchema} = formActionType;
// 初始化市级
updateSchema({
field: 'cityCode',
componentProps: {
numberToString: true,
// 请求接口
api: () => getAreaChild({
areaId: formModel.provinceCode
}),
params: {}, // 这不能少
labelField: 'name',
valueField: 'id',
immediate: true,
},
});
// 初始化区县级
updateSchema({
field: 'districtCode',
componentProps: {
numberToString: true,
// 请求接口
api: () => getAreaChild({
areaId: formModel.cityCode
}),
params: {}, // 这不能少
labelField: 'name',
valueField: 'id',
immediate: true,
},
});
// 返回省级
return data
}),
params: {}, // 这不能少
labelField: 'name',
valueField: 'id',
immediate: true,
};
},
dynamicDisabled: ({values}) => !!values.id,
colProps: {
span: 16,
},
},
{
label: '市级',
field: 'cityCode',
component: 'ApiSelect',
dynamicDisabled: ({values}) => !!values.id,
colProps: {
span: 16,
},
},
{
label: '区县级',
field: 'districtCode',
component: 'ApiSelect',
dynamicDisabled: ({values}) => !!values.id,
colProps: {
span: 16,
},
},
]