Angular之特性模块 ( Feature Module )
项目结构
一 创建特性模块,及其包含的组件、服务。
- 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 )的更多相关文章
- Angular惰性加载的特性模块
一:Angular-CLI建立应用 cmd命令:ng new lazy-app --routing (创建一个名叫 lazy-app 的应用,而 --routing 标识生成了一个名叫 app- ...
- angular学习(五)-- Module
1.5 模块:Module 模块定义了一个应用程序 模块是应用程序中不同部分的容器 模块是应用控制器的容器 控制器通常属于一个模块 ng 中模块的引入最重要的目的就是为了解决原来全局定义的控制器污染的 ...
- angular学习笔记(十五)-module里的'服务'
本篇介绍angular中的模块:module 在笔记(二)http://www.cnblogs.com/liulangmao/p/3711047.html里已经讲到过模块,这篇主要讲模块的 '服务' ...
- Angular pagination分页模块 只提供分页参数处理 不处理分页记录数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 前端学习 node 快速入门 系列 —— 模块(module)
其他章节请看: 前端学习 node 快速入门 系列 模块(module) 模块的导入 核心模块 在 初步认识 node 这篇文章中,我们在读文件的例子中用到了 require('fs'),在写最简单的 ...
- Java 9 的模块(Module)系统
Java 的模块在Java 9中正式实装,一直没时间来研究一下这个东西,今天就和大家一起学习一下这个功能. Java模块解决了什么问题 最近很多同学问我,胖哥,该怎么学习?该学习什么?这里胖哥也穿插说 ...
- Axis2(9):编写Axis2模块(Module)
Axis2可以通过模块(Module)进行扩展.Axis2模块至少需要有两个类,这两个类分别实现了Module和Handler接口.开发和使用一个Axis2模块的步骤如下: 1. 编写实现Module ...
- 多模块项目Module must not contain source root. The root already belongs to module
多模块项目Module "*" must not contain source root *. The root already belongs to module "* ...
- 程序集(Assembly)和模块(Managed Module)
前言 一直都用集成开发坏境(IDE),一直对模块和程序集的概念理解的不是很直观,因为一Build就把你的单个模块塞进程序集里面去了.当然,对你的编程也不会造成太大的影响.但有些东西你最好还是知道比较好 ...
随机推荐
- Redis list 数据类型
lpush()先进后出 //从头部加入元素 //栈 lrange 元素集合 0 -1 lpop 从list头部删除元素,并返回删除元素 rpush()先进先出 //从尾部加 ...
- QT中控制台程序运行问题
环境: ubuntu14.04 问题与解决方法: QT中的控制他程序,默认运行方式是直接输出到Output窗口中来.我的程序需要从控制台输入,这时候默认的运行方式就不行了.通过设置工程全选项让它在终端 ...
- Vmware 不使用物理内存运行缓慢的处理方法
VMware虚拟机直接使用物理内存的方法 1:打开虚拟机操作系统文件夹,找到.vmx后缀的文件 2:以记事本方式打开文件,在最后一行添加mainMem.useNamedFile=FALSE. 3:保存 ...
- Centos6与Centos7防火墙设置与端口开放的方法
Centos升级到7之后,内置的防火墙已经从iptables变成了firewalld.所以,端口的开启还是要从两种情况来说明的,即iptables和firewalld.更多关于CentOs防火墙的最新 ...
- canal 入门
参考文章:Canal - 安装 https://www.aliyun.com/jiaocheng/1131288.html?spm=5176.100033.2.7.7b422237XAirIe 前 ...
- sping IOC和DI 初始化和关系
springIOC和spring DI作为spring core的核心思想,有必要学习下才能更好的使用spring ========================================== ...
- Delphi处理TWebBrowser的Close事件
当TWebBrowser控件访问的 Web 页上的脚本调用window.close方法时,TWebBrowser控件可能会在窗体中消失.我们的程序应该对此作出反应,否则再次访问TWebBrowser控 ...
- 【Noip模拟 20161005】公约数
问题描述 小ww最近仔细研究了公约数,他想到了以下问题:现有nn个正整数,从中选k(2≤k≤n)k(2≤k≤n) 个,设这kk个数的最大公约数为gg,则这kk个数的价值为k×gk×g.求这个价值的最大 ...
- java字符串常量池——字符串==比较的一个误区
转自:https://blog.csdn.net/wxz980927155/article/details/81712342 起因 再一次js的json对象的比较中,发现相同内容的json对象使用 ...
- 静态函数造成GC的原因
有时候用deep profiling查看GC时会发现:一个父函数有GC,展开子层级看到一个很奇怪的 CX::ctor,表示CX进行了构造,然后打开父函数代码却完全看不到有new CX的地方,这个时候可 ...