我的应用程序有不同的部分(我使用独立组件,所以不想说模块).我不想部分之间有直接的依赖关系.

现在,其中一个部分是搜索. 当用户进行搜索时,可以显示不同的搜索结果类型. 假设searchResultType1, searchResultType2, searchResultType3(它们是搜索结果项组件).所有这些都可以同时显示在列表中,混合显示.它们在模板中使用ngFor显示.

每个searchResultTypeX都在应用程序的相应部分中实现.

我正在考虑定义所有searchResultX种类型都实现的抽象类,但它们都作为抽象类注入到搜索组件中.

当我有一个时,我知道如何实现它,但不知道是否有方法根据搜索返回的数据类型注入所有它们.

推荐答案

angular无法自动注入这些成分.但是,您可以动态加载这些组件.为此,您可以创建一些组件工厂,并使用NgDeliverentOutlet来渲染组件- https://angular.io/guide/dynamic-component-loader

以下是stackblitz以及如何操作的示例 https://stackblitz.com/edit/angular-dnfg41?file=src%2Fsolution-with-factory.component.ts

我制作了工厂方法,但最好将其放在单独的类中.

如果您需要传递组件的一些输入,也可以通过NgDeliverentOutlet来完成.您可以修改工厂以返回对象{componentType,initials},然后将两者传递给NgDeliverentOutlet

Typescript相关问答推荐

对深度对象键/路径进行适当的智能感知和类型判断,作为函数参数,而不会触发递归类型限制器

为什么TypeScript失go 了类型推断,默认为any?''

类型脚本类型字段组合

为什么TypeScript假设文档对象始终可用?

使某些(嵌套)属性成为可选属性

当方法参数和返回类型不相互扩展时如何从类型脚本中的子类推断类型

如何在LucideAngular 添加自定义图标以及如何使用它们

在类型脚本中的泛型类上扩展的可选参数

通过字符串索引访问对象';S的值时出现文字脚本错误

TS2339:类型{}上不存在属性消息

我可以以这样一种方式键入对象,只允许它的键作为它的值吗?

分解对象时出现打字错误

将具有Readonly数组属性的对象接口转换为数组

使用TypeScrip的类型继承

如何连接属性名称和值?

无法缩小深度嵌套对象props 的范围

有没有一种更好的方法来存储内存中的数据,而不是在类型脚本中使用数组和基于索引的函数?

元组解释

基于可选参数的动态类型泛型类型

将函数签名合并到重载中