typescript 在FormProp贡献者创建中使用选项值

4si2a6ki  于 2023-03-31  发布在  TypeScript
关注(0)|答案(1)|浏览(158)

我目前正在使用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......名称:字符串;}'

kcwpcxri

kcwpcxri1#

我已经给你发了一个问题的答案。你已经删除了这个问题。如果你再删除,就个人而言,我永远不会给你发答案。
让我们检查一下这个问题。返回undefined或observe的回调函数是一个选项签名。

readonly options: PropCallback<R, Observable<ABP.Option<any>[]>> | undefined;

这意味着option应该是一个函数,而不是像()=〉of([{key:“id”,value:{id:“1”,name:“John”}}])这样的静态选项

相关问题