【问题标题】:Is it possible to load Components from database Using Angular 6 and REST APIs?是否可以使用 Angular 6 和 REST API 从数据库加载组件?
【发布时间】:2018-12-16 06:52:00
【问题描述】:

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

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

【问题讨论】:

  • 这可能是一场斗争。 Angular 在运行之前需要被转译。这并不是说你不能存储 HTML 并加载它,但我认为你不能存储任何 Angular 模板语法
  • 你可以使用延迟加载:angular.io/guide/lazy-loading-ngmodules

标签: angular asp.net-web-api content-management-system angular6 asp.net-core-2.1


【解决方案1】:

简单的答案是否定的。

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    相关资源
    最近更新 更多