我目前正在使用Angular版本开发ABP框架,我想为我的表单创建一个新的贡献者。
好吧,我将新属性添加到表单中:
const testProp = new FormProp<UpdateProfileDto>({
type: ePropType.String,
name: 'Test',
displayName: '::Test',
}
);
它正在工作,但我想显示一个下拉列表,而不是一个单一的属性,所以显然,在文档中有一个选项可以做到这一点:
options是一个回调函数,在需要下拉菜单时调用。它必须返回一个observable。(默认值:未定义)
好吧,所以我尝试在de FormProp中添加选项:
options: [] or {} // does not work
但是我需要弄清楚我应该向它发送什么,我尝试发送一个数组或对象,但它不起作用。
这些选项来自:
export declare class FormProp<R = any> extends Prop<R> {
readonly options: PropCallback<R, Observable<ABP.Option<any>[]>> | undefined;
}
ABP.选项实现:
interface Option<T> {
key: Extract<keyof T, string>;
value: T[Extract<keyof T, string>];
}
这更像是一个 typescript 问题而不是一个框架问题。我如何发送一个选项列表来形成一个选项属性?
我也尝试这样做:
const option1: ABP.Option<any> = {
key: 'testKey',
value: 'testValue'
};
const option2: ABP.Option<any> = {
key: 'testKey2',
value: 'testValue2'
};
const options: Array<ABP.Option<any>> = [];
options.push(option1);
options.push(option2);
const timeZoneProp = new FormProp<UpdateProfileDto>({
type: ePropType.String,
name: 'Test',
displayName: '::Test',
isExtra: true,
options: this.options
}
);
但是现在在this.options
上抛出了一个新的错误:
对象可能为“undefined”
图片:x1c 0d1x
所以我把this.options
改为options
:
options: options
但现在我得到了一个新的错误:
类型“Option[]”不可分配给类型“PropCallback〈UpdateProfileDto,Observable〈Option[]〉〉”。类型“Option[]”未提供签名的匹配项(数据:忽略〈PropData,“data”〉,auxData?:any):Observable〈Option[]〉'. ts(2322)
form-props.d.ts(37,14):预期的类型来自属性“options”,该属性在类型“{ validators?:PropCallback〈UpdateProfileDto,ValidatorFn[]〉;asyncValidators?:PropCallback〈UpdateProfileDto,AsyncValidatorFn[]〉;......还有15......名称:字符串;}'
1条答案
按热度按时间kcwpcxri1#
我已经给你发了一个问题的答案。你已经删除了这个问题。如果你再删除,就个人而言,我永远不会给你发答案。
让我们检查一下这个问题。返回undefined或observe的回调函数是一个选项签名。
这意味着option应该是一个函数,而不是像()=〉of([{key:“id”,value:{id:“1”,name:“John”}}])这样的静态选项