{ imports: [ BrowserModule ] }) export class AppModule { } 由于 QuickStart 是一个运行在浏览器中的 Web 应用,所以根模块需要从...@Component 是 Angular 2 的装饰器 ,它会把一份元数据关联到 AppComponent 组件类上。...接下来我们重新打开 app.module.ts 文件,导入新的 AppComponent ,并把它添加到 NgModule 装饰器的 declarations 和 bootstrap 字段中: import...,让你的代码可以运行,然后在该平台上启动你的 AppModule。...-- IE 需要 polyfill --> node_modules/core-js/client/shim.min.js"> node_modules
paths 属性中查找,然后再 node_modules 中查找。.../lib/sf-lib.module'; 这里需要说明的是,对于组件来说:设置 @NgModule 的 exports 属性是为了使得元素可见,而添加到public_api.ts 入口文件是为了使得 Class...在完成新建 ButtonComponent 组件的导出工作后,我们需要使用下列命令,重新构建 sf-lib 库: $ ng build --prod sf-lib sf-lib 重新构建成功后,我们就可以在模板中使用刚创建的...DataService 需要利用 HttpClient 从网络上获取对应的数据,这时我们就需要在 SfLibModule 模块中导入 HttpClientModule 模块,且在 DataService...sf-lib 库开发完成后,我们可以把开发完的库发布到 npm 上: $ cd dist/sf-library $ npm publish 参考资源 The Angular Library Series
模块 Angular应用都是模块化的,ES5没有内置的模块化系统,可以使用第三方模块系统,然后我们为应用创建独立的命名空间 app,文件代码可以包裹在 IIFE(立即执行函数表达式)中: (function...template 属性容纳着组件的模板。 ---- 添加 NgModule Angular 应用由 Angular 模块组成,该模块包含了 Angular 应用所需要的组件及其他任何东西。...接下来我们创建 app/app.module.js 文件,内容如下: app.module.js 文件: (function(app) { app.AppModule = ng.core.NgModule..., function() { ng.platformBrowserDynamic .platformBrowserDynamic() .bootstrapModule(app.AppModule...上文中提到的应用根模块 AppModule。
ERROR in AppModule is not an NgModule 由于本人也只是略懂angular2,很多东西还不是特别的明白,对于错误的理解还不够深刻,所以对于angular2的错误尽量用最简单的方式解决...对于 ERROR in AppModule is not an NgModule 的错误,追根究底的话,应该是版本的问题,typescript的版本,具体是啥不清楚。...如果解决: 在自己的电脑上重新安装一个anguar2的新工程,ng new 工程名; 然后将旧app中的所有的内容copy到新的工程目录中的app文件中
1.模块 NgModule 是一个带有 @NgModule 装饰器的类。 @NgModule 的参数是一个元数据对象,用于描述如何编译组件的模板,以及如何在运行时创建注入器。...NgModule 的元数据会做这些: 声明某些组件、指令和管道属于这个模块。 公开其中的部分组件、指令和管道,以便其它模块中的组件模板中可以使用它们。...@NgModule 装饰器表明 AppModule 是一个 NgModule 类。 @NgModule 获取一个元数据对象,它会告诉 Angular 如何编译和启动本应用。...依赖注入 在 Angular 中,要把一个类定义为服务,就要用 @Injectable() 装饰器来提供元数据,以便让 Angular 可以把它作为依赖注入到组件中。...package.json 配置工作空间中所有项目可用的 npm包依赖 package-lock.json 提供 npm 客户端安装到 node_modules 的所有软件包的版本信息 src/ 根项目的源文件
], providers: [UserService] }) 在 Angular 6 之后,我们也可以利用 @Injectable 的元数据来配置服务类,如: import { Injectable...当你注册根级别的服务时,Angular 会创建一个单独的共享服务实例。如果在 @Injectable 元数据中注册服务,Angular 会在构建阶段自动剔除无用的服务,进而优化我们的应用程序。...因此当我们在跟模块中配置某个服务后,这个服务将在整个应用程序中可用。需要注意的是在非懒加载的特性模块中,如果我们也注册了同一个服务。在根模块和特性模块中是使用同一个服务实例,即服务是单例的。...因为在编译阶段,非懒加载的特性模块 UserModule 中配置的 providers 会与 AppModule 中配置的 providers 进行合并,当发现使用同样的 Token 时,AppModule...点击 “改名” 后,你会发现 AppModule 内的名字没有发生改变,具体如下图所示: ?
一个Angular模块,无论是根还是功能性,都是一个 使用@NgModule修饰符的类。 修饰符(decorators )是修改JavaScript类的功能函数。...Angular有许多的修饰符,通过给类附加元数据可以知道这些类的的意义,它们如何工作。学习更多 关于网页元数据。 NgModule 是一个描述符函数,描述模块的单一元数据对象。...'; import { AppModule } from '....module — 一个类修饰符使用@NgModule — 是 Angular 的基础功能。.../app.component'; export class AppModule { } 在网上学习更过关于Javascript模块系统的知识。 这是两种不同的和完整的模块系统,在应用中同时使用它们。
'ng2-pdf-viewer': 'node_modules/ng2-pdf-viewer', 'pdfjs-dist': 'node_modules/pdfjs-dist' } 然后还要添加在...注册主配置文件 要使用他,我们还要在app.module.ts文件里注册这个包,才能在其他文件里使用,一个最简单的配置如下: import { NgModule } from '@angular/core.../app/app.component'; import { PdfViewerComponent } from 'ng2-pdf-viewer'; @NgModule({ imports: [BrowserModule...], declarations: [AppComponent, PdfViewerComponent], bootstrap: [AppComponent] }) class AppModule...{} platformBrowserDynamic().bootstrapModule(AppModule); 注意要import,然后在@NgModule里的declarations里注册即可。
模块没有父子关系,只有引入 ---- 用@NgModule来定义应用中的模块。 Angular 模块是带有 @NgModule 装饰器的函数。...@NgModule接收一个元数据对象,该对象告诉 Angular 如何编译和运行模块代码。 它标记出该模块拥有的组件、指令和管道, 并把它们的一部分公开出去,以便外部组件使用它们。... Angular模块是由一个@NgModule装饰器提供元数据的类,元数据包括: 1-导入其他模块 2-声明哪些组件、指令、管道属于该模块 3-公开某些类,以便其他的组件模块可以使用它们...forRoot 根模块AppModule会导入CrudModule类并把它的providers添加到AppModule的服务提供商中。...这样可以确保我们显式添加到AppModule 中的那些提供商总是优先于从其它模块中导入的提供商。
docs/ts/latest/quickstart.html 从官网中提取几个主要步骤 首先安装nodejs ,node js里面有自带的npm,也就是安装了node js后也同时安装npm 1...、 新建一个angularjs2的文件夹 2、 往项目目录下添加下列包定义与配置文件 (1) package.json 列出了应用的依赖,并定义了一些有用的脚本...消息就行了,安装完之后多了2个文件夹 node_modules 和 typings, 4、在项目的根目录下创建一个app子目录(创建一个名字为app的文件夹) (1)在app文件中创建组件文件...) 创建app.module.ts 我们把Angular应用通过Angular模块组织成一些功能紧密相关的代码块,每个应用都至少需要一个根 模块,习惯上叫AppModule...,主要是把component组件的元数据传给NgModule 装饰器函数 ( 3 ) 添加main.ts ( 4 ) 添加 index.html 5 构建并执行本应用,cmd打开控制台
/node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css", "src/style.css" ]...platformBrowserDynamic().bootstrapModule(AppModule) 也许你注意到了,上面的方法中还传递了参数 AppModule。真正的应用代码!...是的,应用的代码都包含在这里面。AppModule 包含了声明(declarations),组件(components),服务(services)和应用相关的其他代码。...下面是典型的 AppModule 文件: import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from...} 在这个 AppModule 中,在 @NgModule 装饰器中,我们有一个引导 bootstrap 数组,表明加载 AppComponent。
@Component 是一个修饰器函数,这个函数为组件指定了 Angular 元数据。 CLI 自动生成了三个元数据属性: selector — 组件的 CSS 元素选择器。...AppModule Angular 需要知道如何把应用程序的各个部分组合到一起,以及该应用需要哪些其它文件和库。 这些信息被称为元数据(metadata)。...最重要的 @NgModule 装饰器位于顶级类 AppModule 上。... 元数据的 imports 数组中,这里是该应用所需外部模块的列表。...你使用 UppercasePipe 来格式化英雄的名字。 你用 ngModel 指令实现了双向数据绑定。 你知道了 AppModule。
Angular 2 应用程序应用主要由以下 8 个部分组成: 1、模块 (Modules) 2、组件 (Components) 3、模板 (Templates) 4、元数据 (Metadata) 5、数据绑定...每个 Angular 应该至少要有一个模块(根模块),一般可以命名为:AppModule。 Angular 模块是一个带有 @NgModule 装饰器的类,它接收一个用来描述模块属性的元数据对象。...一个最简单的根模块: app/app.module.ts 文件: import { NgModule } from '@angular/core'; import { BrowserModule...---- 元数据(Metadata) 元数据告诉 Angular 如何处理一个类。 考虑以下情况我们有一个组件叫作 Component ,它是一个类,直到我们告诉 Angular 这是一个组件为止。...你可以把元数据附加到这个类上来告诉 Angular Component 是一个组件。 在 TypeScript 中,我们用 装饰器 (decorator) 来附加元数据。
三、Step by Step 3.1、前端模块化 前端模块化是指将程序中一组相关的功能按照一定的规则组织在一块,整个模块内部的数据和功能实现是私有的,通过 export 暴露其中的一些接口(方法)与系统中的别的模块进行通信...NgModule 简介 在 Angular 应用中,至少会存在一个 NgModule,也就是应用的根模块(AppModule),通过引导这个根模块就可以启动整个项目 像开发中使用到 FormsModule...,通过使用 @NgModule 装饰器装饰 AppModule 类,定义了这个模块的一些属性特征,从而告诉 Angular 如何编译和启动本应用 import { BrowserModule } from...imports imports 数组表明当前模块正常工作时需要引入哪些的模块,例如这里使用到的 BrowserModule、AppRoutingModule 或者是我们使用双向数据绑定时使用到的 FormsModule...CommonModule, FormsModule, CrisisRoutingModule ] }) export class CrisisModule { } 当创建完成后,
$ ng new project-name 启动本地服务器 $ cd project-name $ ng serve 第二节 - 插值表达式 在 Angular 中,我们可以使用插值语法实现数据绑定。...基础知识 定义组件的元信息 在 Angular 中,我们可以使用 Component 装饰器来定义组件的元信息: @Component({ selector: 'my-app', // 用于定义组件在...name = 'Angular'; } 定义数据接口 在 TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象外,也可用于对「对象的形状(Shape)」进行描述...], bootstrap: [ AppComponent ] }) export class AppModule { } 使用 UserComponent 组件 import { Component...selector: 'my-app', template: ` `, }) export class AppComponent {} 在构造函数中执行数据初始化
模块Module Angular 应用的基本构造块是NgModule, 它为组件提供了编译的上下文环境。 Angular 应用就是由一组NgModule定义的。...一个Angular应用至少有一个用于启动的根模块(root module), 根模块通常命名为AppModule,并位于一个名叫 app.module.ts 的文件中。...还会有很多特性模块(feature module) NgModule 是由@NgModule() 装饰器定义的类。...@NgModule() 装饰器是一个函数,参数是一个元数据对象,元数据对象的属性用于描述这个模块。...@NgModule 的参数是一个元数据对象,用于描述如何编译组件的模板,以及如何在运行时创建注入器。
其中最突出的是 AppModule。 AppModule 是你应用中的根模块,并且对于运行我们的应用程序是必要的模块。在这里,我们可以定义应用程序使用哪些组件或者哪些模块。那么它长什么样呢?...我们通过 angular-cli 来生成一个基本的 AppModule。...就像组件一样,生成的结构是一个模块树。 @NgModule 在 @NgModule 操作符里面,我们定义模块的所有属性。我们提供了一个简单的 JavaScript 对象作为参数。...这个程序只有一个模块,就是 AppModule。 现在,为我们应用程序添加登录内容。登录内容将包含一个登录的页面和一个注册的页面。也许会有一个帮助的页面。每个页面都是以组件的方式呈现。...当我们再次进入路由后,登陆组件会被展示出来。这是因为我们配置其为默认路由。
: [], imports: [ CommonModule ] }) export class Module01Module { } 输出内容说明: NgModule的用法和作用跟组件中的一致为了使用...@NgModule装饰器来对Module类进行装饰....将FModule导入AppModule @NgModule({ imports: [ Module01Module, // 添加FModule ], bootstrap: [AppComponent...] }) export class AppModule { } 渲染FModule的组件模板 为FModule模块增加组件 ng generate component /后的module01模块如下: @NgModule({ declarations: [ Comp1Component ], imports: [ CommonModule ], exports:
@NgModule的作用: NgModule 最根本的意义是帮助开发者组织业务代码,开发者可以利用 NgModule 把关系比较紧密的组件组织到一起,这是首要的。...NgModule 用来控制组件、指令、管道等是否可以使用,处于同一个 NgModule 里面的组件默认互相可见,而对于外部的组件来说,只能看到 NgModule 导出( exports )的内容,也就是说...NgModule 是打包时候用到的最小单位,打包的时候会检查所有 @NgModule 和路由配置,Angular底层是使用webpack打包。...forRoot()//在主模块中定义主要的路由信息 forChild()``//应用在特性模块(子模块)中 (2)懒加载:loadChildren 此处并没有将对应的模块加入到AppModule中,而是通过...{ } 复制代码 但是,我们更喜欢自己去控制对模块的预加载,这时就需要自定义预加载策略 A.自定义-5秒后加载所有模块 在app组建的同级新建一个custom-preloading-strategy.ts
领取专属 10元无门槛券
手把手带您无忧上云