首页 > 解决方案 > 是否可以使用 Angular 6 和 REST API 从数据库加载组件?

问题描述

是否可以使用 Angular 6 和 REST API 从数据库加载组件?

我正在尝试使用以下技术编写 CMS:C#、ASP.net Core、WebAPI、Angular 6、...

标签: angularasp.net-web-apicontent-management-systemangular6asp.net-core-2.1

解决方案


简单回答是不。

使用常规方法,Angular 无法加载在编译时未知的组件。通常,这意味着组件列在模块的“声明”部分中。

您可以动态创建组件,但它们仍然需要在编译时知道,并列在模块的“entryComponents”部分中。

如果我了解您想要的场景,延迟加载模块将无济于事 - 这只是为了改善初始加载时间,因此在首次加载时,用户不必等待应用程序中的所有模块加载。您仍然无法创建在编译时未知的组件。

也就是说,可以即时编译组件,但只能在“解释”模式下,通常称为“开发模式”。使用 AOT(提前编译)时,您不能这样做。恕我直言,没有人会在生产中使用非 AOT 构建。

我所做的与您想要的类似的是根据我从 REST 调用中获得的配置动态创建(在编译时已知)组件。我有一堆经过 AOT 编译的组件,以及一个将字符串与组件相关联的映射。这些组件可以使用配置对象进行定制。给定来自 REST 调用的配置,我按名称查找组件,动态创建它,并为其提供配置对象。

当然,这只适用于在编译时知道您的可能对象的世界,并且您只是在运行时选择和配置它们。它不允许您创作组件并将源代码或编译后的对象粘贴到您的 CMS 中。


推荐阅读