项目结构

一 创建特性模块,及其包含的组件、服务。

ng g module art
ng g component art/music
ng g component art/dance
ng g service art/performance

二 特性模块

art.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MusicComponent } from './music/music.component';
import { DanceComponent } from './dance/dance.component';
import { PerformanceService } from './performance.service'; @NgModule({
imports: [
CommonModule
],
// 把特性模块和组件关联起来:添加专属于这个模块的可声明对象(组件、指令和管道)
declarations: [MusicComponent, DanceComponent],
// 导出组件:导入特性模块后,就可以使用其中包含的组件模版了
exports: [
MusicComponent,
DanceComponent
],
providers: [
PerformanceService
]
})
export class ArtModule { }

三 组件

music.component.ts

import { Component, OnInit, Input } from '@angular/core';

@Component({
selector: 'app-music',
templateUrl: './music.component.html',
styleUrls: ['./music.component.css']
})
export class MusicComponent implements OnInit { @Input()
name: string; constructor() { } ngOnInit() {
} }

music.component.html

<p>
music works!{{name}}
</p>

dance.component.ts

import { Component, OnInit, Input } from '@angular/core';

@Component({
selector: 'app-dance',
templateUrl: './dance.component.html',
styleUrls: ['./dance.component.css']
})
export class DanceComponent implements OnInit { @Input()
name: string; constructor() { } ngOnInit() {
} }

dance.component.html

<p>
dance works!{{name}}
</p>

四 服务

performance.service.ts

import { Injectable } from '@angular/core';

@Injectable()
export class PerformanceService { constructor() { } perform(): string[] {
return ['唱歌', '跳舞'];
}
}

五 导入特性模块

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core'; import { AppComponent } from './app.component';
import { ArtModule } from './art/art.module'; @NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
ArtModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

六 使用特性模块的组件、服务

app.component.ts

import { Component } from '@angular/core';
import { PerformanceService } from './art/performance.service'; @Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent { constructor(public performance: PerformanceService) { }
perform() {
console.log(this.performance.perform());
}
}

app.component.html

<p>
app works!
</p>
<!-- 单向绑定:组件的属性 -->
<app-music [name]="'水边的阿狄丽娜'"></app-music>
<!-- 单向绑定:值是固定的,故使用一次性绑定 ( a "one-time" binding ) -->
<app-dance name="踢踏舞"></app-dance>
<button type="button" (click)="perform();">演出</button>

七 运行效果

Angular之特性模块 ( Feature Module )的更多相关文章

  1. Angular惰性加载的特性模块

    一:Angular-CLI建立应用 cmd命令:ng new lazy-app --routing    (创建一个名叫 lazy-app 的应用,而 --routing 标识生成了一个名叫 app- ...

  2. angular学习(五)-- Module

    1.5 模块:Module 模块定义了一个应用程序 模块是应用程序中不同部分的容器 模块是应用控制器的容器 控制器通常属于一个模块 ng 中模块的引入最重要的目的就是为了解决原来全局定义的控制器污染的 ...

  3. angular学习笔记(十五)-module里的'服务'

    本篇介绍angular中的模块:module 在笔记(二)http://www.cnblogs.com/liulangmao/p/3711047.html里已经讲到过模块,这篇主要讲模块的 '服务' ...

  4. Angular pagination分页模块 只提供分页参数处理 不处理分页记录数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 前端学习 node 快速入门 系列 —— 模块(module)

    其他章节请看: 前端学习 node 快速入门 系列 模块(module) 模块的导入 核心模块 在 初步认识 node 这篇文章中,我们在读文件的例子中用到了 require('fs'),在写最简单的 ...

  6. Java 9 的模块(Module)系统

    Java 的模块在Java 9中正式实装,一直没时间来研究一下这个东西,今天就和大家一起学习一下这个功能. Java模块解决了什么问题 最近很多同学问我,胖哥,该怎么学习?该学习什么?这里胖哥也穿插说 ...

  7. Axis2(9):编写Axis2模块(Module)

    Axis2可以通过模块(Module)进行扩展.Axis2模块至少需要有两个类,这两个类分别实现了Module和Handler接口.开发和使用一个Axis2模块的步骤如下: 1. 编写实现Module ...

  8. 多模块项目Module must not contain source root. The root already belongs to module

    多模块项目Module "*" must not contain source root *. The root already belongs to module "* ...

  9. 程序集(Assembly)和模块(Managed Module)

    前言 一直都用集成开发坏境(IDE),一直对模块和程序集的概念理解的不是很直观,因为一Build就把你的单个模块塞进程序集里面去了.当然,对你的编程也不会造成太大的影响.但有些东西你最好还是知道比较好 ...

随机推荐

  1. linux 组管理

    修改文件所有者 chown  用户名  文件名 修改文件所在的组 chgrp  组名    文件名 r = 4 , w = 2, x = 2 u  :所有者   g :所在组   o:其他组   a: ...

  2. 图文详解AO打印(端桥模式)(转)

    一.概述   AO打印是英文Active-Online Print的简称,也称主动在线打印.打印前支持AO通讯协议的AO打印机首先通过普通网络与C-Lodop服务保持在线链接,网页程序利用JavaSc ...

  3. Django-wed开发框架-练习题

    https://www.cnblogs.com/pandaboy1123/p/9894981.html 1.列举Http请求常见的请求方式 HTTP协议是Hyper Text Transfer Pro ...

  4. spark Kryo serialization failed: Buffer overflow 错误

    今天在写spark任务的时候遇到这么一个错误,我的spark版本是1.5.1. Exception in thread "main" com.esotericsoftware.kr ...

  5. 尚硅谷redis学习10-复制

    是什么? 能干嘛? 怎么玩? 1) 初始情况 设置slave 日志查看 主机查看 备机日志 复制状态 觉见问题 1 切入点问题?slave1.slave2是从头开始复制还是从切入点开始复制?比如从k4 ...

  6. Delphi TQuery 的Locate用法

    Help里的解释 function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions) ...

  7. unity "[ ]"标签

    [CanEditMultipleObjects]//可多对象编辑 public class Collider2DEditor:Editor {} [SerializeField]//序列化私有属性 p ...

  8. Nodejs 第一站

    Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js 是一个事件驱动I/O服务端JavaSc ...

  9. 1.网站js文件获取

    ++++++++++++++++++++++ pls,input your domain like: http://111.com #coding:utf8 #encoding=utf8 import ...

  10. 解决在.NET 4.0下无法发送包含尖括号等请求的问题

    今天在做一个简单的数据添加时,使用jQuery的ajax的post操作,发现如果包含尖括号等html格式数据的请求无法发给服务端. 以往的做法就是在页面中或web.config中的pages节点中增加 ...