我正在尝试从
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 可能是什么?