如何在 Angular CDK 的 Dialog.open 中使用泛型<?????>

问题描述 投票:0回答:1

我正在尝试从

Angular 的 CDK Dialog
中找出将哪些接口放入 open 函数的泛型部分。请注意,这不是棱角分明的材料!

这就是我到目前为止想出来的

const dialogRef = this.dialog.open<IResult, unknown, IInputData>(FooComponent, {
  width: '350px',
  data: { x: 10 } as IInputData
})

dialogRef.closed.subscribe((data: IResult) => { ... }

如你所见,我已经找到了 2 个泛型(第一个和最后一个)。但目前还不清楚中间泛型应该是什么。所以,因为文档中没有提到泛型,所以我检查了

open
的接口,它是

open<R = unknown, D = unknown, C = unknown>(component: ComponentType<C>, config?: DialogConfig<D, DialogRef<R, C>>): DialogRef<R, C>;
open<R = unknown, D = unknown, C = unknown>(template: TemplateRef<C>, config?: DialogConfig<D, DialogRef<R, C>>): DialogRef<R, C>;
open<R = unknown, D = unknown, C = unknown>(componentOrTemplateRef: ComponentType<C> | TemplateRef<C>, config?: DialogConfig<D, DialogRef<R, C>>): DialogRef<R, C>;

它是我感兴趣的通用

D
。它用于
DialogConfig
,看起来像这样

/** Configuration for opening a modal dialog. */
export declare class DialogConfig<D = unknown, R = unknown, C extends BasePortalOutlet = BasePortalOutlet> {
    ...

    /**
     * Providers that will be exposed to the contents of the dialog. Can also
     * be provided as a function in order to generate the providers lazily.
     */
    providers?: StaticProvider[] | ((dialogRef: R, config: DialogConfig<D, R, C>, container: C) => StaticProvider[]);
    /**
     * Component into which the dialog content will be rendered. Defaults to `CdkDialogContainer`.
     * A configuration object can be passed in to customize the providers that will be exposed
     * to the dialog container.
     */
    container?: Type<C> | {
        type: Type<C>;
        providers: (config: DialogConfig<D, R, C>) => StaticProvider[];
    };
 ...

这是我迷路的地方。有什么建议 D 可能是什么?

angular typescript typescript-generics angular-cdk
1个回答
1
投票

D
是注入子组件的数据类型。根据来源

/** Data being injected into the child component. */
data?: D | null = null;
© www.soinside.com 2019 - 2024. All rights reserved.