【angular】NgModule学习

【angular】NgModule学习,第1张

NgModule参考手册

在模板中可用的选择器 selector 包括那些直接声明在这里的可声明对象和导入的那些 NgModule 中所导出的可声明对象。

可声明对象必须属于也 只能属于一个模块 。 如果你尝试把同一个类声明在多个模块中,那么编译器就会报错。 要注意 不能声明那些从其它模块中导入的类

Angular 使用 entryComponents 来启用 树震动 , 即 只编译 项目中 实际使用 的组件 ,而不是编译所有在 ngModule 中声明但从未使用的组件

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

Angular 会自动将以下类型的组件添加到模块的 entryComponents 中:

① @ NgModule.bootstrap 列表中的组件,如动态加载 AppComponent 。

② 路由器配置中引用的组件,因为 router-outlet 也使用 ViewContainerRef.createComponent( ) 将路由组件添加到 DOM 。。

离线模板编译器 OTC 只生成实际使用的组件。如果组件不直接用于模板, OTC 不知道是否需要编译。有了 entryComponents ,你可以告诉 OTC 也编译这些组件,以便在运行时可用。如一个列表页中点击新增按钮时,d出的表单组件,它不在路由中,需要显示写在 entryComponents 中 。

导出具有传递性。 ModuleA 可以导入 ModuleB 并将其导出,这会让所有 ModuleB 中的导出同样可用在导入了 ModuleA 的那些模块中。

angular 中的 NgModule 是否类似 java 中的 package 呢?

通过导出的传递性,将第三方组件模块引入到具体的页面模块

Angular 系统中通过在类上添加 @Injectable 装饰器来告诉系统这个类(服务)是可注入的。当然了这仅仅只是告诉 Angular 系统这个类(服务)类是可注入的。但是这个服务可以在哪里使用,由谁提供,就得靠注入器和提供商来一起确定了。

(一) providedIn 方式:对应三个值: Type<any>、 root 、 null

编译的时候会抛出一个警告信息,编译不过。具体怎么写,也请看原文吧。

(二) Component (组件)级注入器

本人自己看的 angular工程案例 中,使用 第二种方式 的居多(即装饰器 @Component 中的 providers 比较常见; @NgModule中 的 providers 就在 app.module 中见过 );

关于 provider的详细介绍 也请参看原文,本人还未深入学习,后期有机会深入使用的话,再认真看看。暂时先会简单的使用!!!

@NgModule 了解一点喽,后面再看看其他装饰器: Angular装饰器介绍

能具体说一下你的需求吗?

创建自定义指令的方法:

<!--创建自定义指令-->

<div id="appauto" data-ng-app="appauto">

    <!--标签-->

    <app-auto></app-auto>

    <!--属性-->

    <div app-auto></div>

    <!--类名-->

    <div class="app-auto"></div>

    <!--注释-->

    <!-- directive:app-auto -->

</div> var appauto=angular.module('appauto',[])

        appauto.directive('appAuto',function(){

            return {

//                restrict限制使用:

//                A属性E元素C类名M注释,默认EA

                restrict:'AEMC',

                template:'<h1>自定义指令创建</h1>'

            }

        })

        angular.bootstrap(document.getElementById('appauto'),['appauto'])


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11628140.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存