项目结构

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

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>

七 运行效果

最新文章

  1. 虚拟机解决Device eth0 does not seem to be present 问题。
  2. gradle 默认属性
  3. 彻底解决Google浏览器CSS居中问题
  4. 减少图片HTTP 请求的方案
  5. UVa 103 Stacking Boxes --- DAG上的动态规划
  6. QT 十六进制字符串转化为十六进制编码
  7. 1.5.3 什么是Tokenizer-分词
  8. 【STL】帮你复习STL泛型算法 一
  9. iOS开发--TableView详细解释
  10. C# 中判断程序是否启动使用Mutex使用异常
  11. ios8.1.2耗电情况严重的解决方法
  12. 管理集群中的 crs 管理员
  13. python语言学习8——字符串和编码
  14. rabbitmq重启时报错,并导致erlang崩溃和Rabbit的常用命令
  15. mysql锁机制(Innodb引擎)
  16. 算法笔记 3.2 codeup1934 找X
  17. 广告牌LED灯阵
  18. bzoj千题计划193:bzoj2460: [BeiJing2011]元素
  19. The future of scripting in Unity
  20. 给 console 添加颜色

热门文章

  1. 【转】簡單講講 USB Human Interface Device
  2. Map 接口
  3. springboot 多环境选择
  4. CSS样式学习-2
  5. WDA-3-ALV查询
  6. Android Studio安装插件提示was not installed: Cannot download的解决
  7. js中实现cookie的增删改查(document.cookie的使用详情)
  8. aaad
  9. 使用ab对网站进行压力测试
  10. su: cannot set user id: Resource temporarily unavailable问题解决