是否可以使用Angular 6和REST API从数据库加载组件?
我正在尝试使用以下技术编写CMS: C#,ASP.net Core,WebAPI,Angular 6,...
答案 0 :(得分:1)
简单的答案是否定的。
使用常规方法,Angular无法加载在编译时未知的组件。 通常,这意味着该组件在模块的“声明”部分列出。
您可以动态创建组件,但是仍然需要在编译时就知道它们,并在模块的“ entryComponents”部分中列出。
如果我了解您的理想情况,则延迟加载模块将无济于事-这仅是为了缩短初始加载时间,因此,在首次加载时,用户不必等待应用程序中的所有模块都加载。您仍然无法创建在编译时未知的组件。
也就是说,可以即时编译组件,但只能以“解释”模式进行编译,通常称为“开发模式”。使用AOT(提前编译)时,不能执行此操作。而且恕我直言,在他们的头脑中没有人会在生产中使用非AOT的版本。
我所做的与您想要的相似,是根据我从REST调用获得的配置动态创建(在编译时已知)组件。我有一堆是AOT编译的组件,还有一个将字符串与组件关联的映射。可以使用配置对象自定义组件。给定REST调用中的配置,我按名称查找该组件,动态创建它,并为其提供配置对象。
当然,这仅在编译时知道您可能的对象范围并且仅在运行时选择和配置它们时才有效。它不允许您编写组件并将源代码或编译后的对象粘贴到CMS中。