gpt4 book ai didi

angular - angular ngModule 中的 entryComponents 是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:45:06 25 4
gpt4 key购买 nike

我正在开发一个依赖于 angular 2Ionic 应用程序 ( 2.0.0-rc0 )。所以引入了新的ngModules。我正在下面添加我的 app.module.ts.

import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { Users } from '../pages/users/users';

@NgModule({
declarations: [
MyApp,
Users
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
Users
]
})
export class AppModule {}

entryComponents 在这里做什么? Components 已经在 declarations 中定义。那么重复它们有什么必要呢?如果我不在此处包含组件会怎样?

最佳答案

注意:从 Angular 9.0.0 开始不推荐使用 EntryConponent查看angular docs形成更多细节。

这适用于使用 ViewContainerRef.createComponent() 添加的动态添加的组件。将它们添加到 entryComponents 告诉离线模板编译器编译它们并为它们创建工厂。

在路由配置中注册的组件也会自动添加到 entryComponents 中,因为 router-outlet 也使用 ViewContainerRef.createComponent() 添加将组件路由到 DOM。

离线模板编译器(OTC)只构建实际使用的组件。如果组件不直接在模板中使用,OTC 无法知道它们是否需要编译。使用 entryComponents,您可以告诉 OTC 也编译这些组件,以便它们在运行时可用。

What is an entry component? (angular.io)

NgModule docs (angular.io)

Defines the components that should be compiled as well when this component is defined. For each components listed here, Angular will create a ComponentFactory and store it in the ComponentFactoryResolver.

如果您没有将动态添加的组件列出到 entryComponents,您将收到一条关于缺少工厂的错误消息,因为 Angular 不会创建一个。

另见 https://angular.io/docs/ts/latest/cookbook/dynamic-component-loader.html

关于angular - angular ngModule 中的 entryComponents 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com