中间人模式和生命周期

中间人模式

  1. 设计一个购买按钮,获取所需要购买物品的信息,在报价组件中
@Output()
buy:EventEmitter<PriceQuote> = new EventEmitter();


buyStock(event){
  this.buy.emit(new PriceQuote(this.stockCode,this.price));
}
<div>报价组件</div>
<div>

  <input type="button" value="购买" (click)="buyStock($event)">
</div>
  1. 下单组件
<div>下单组件</div>
<div>买100手{{priceQuote.stockCode}}股票
  价格{{priceQuote.lastPrice | number:'2.2-2'}}
</div>

@Input()
stockCode:string;
priceQuote:PriceQuote;
  1. 主组件中
  buyHandle(event:PriceQuote){
  this.priceQuote = event;
}
<app-price-quote (buy)="buyHandle($event)"></app-price-quote>
<app-order [priceQuote]="priceQuote"></app-order>
  1. 报价组件和订单组件在彼此不知道对方存在的时候,共同完成一个下单的功能,也就是两个平行的有共同的父组件的组件之间的通讯,这就是中间人模式,在两个没有共同父组件的组件之间,这时应该使用一个可注入的服务作为中间人,无论何时,组件被创建这个中间人服务被注入,组件可以订阅这个服务发射的事件流

组件生命周期

  1. 组件的生命周期钩子,组件初始化

ngOnChanges
ngDoCheck
ngAfterContentChecked
ngAfterViewChecked

  • (只调用一次)

constructor
ngOnInit
ngAfterContentInit
ngAfterViewInit

  1. 变化检测(变更检测方法就是初始化中会重复执行的方法)

ngOnChanges
ngDoCheck
ngAfterContentChecked
ngAfterViewChecked

3.组件销毁(只调用一次)

ngOnDestroy

  1. 每一个生命周期钩子都是@angular/core中的接口
  2. 生成一个计数器,用来显示每一行日志的编号
let logIndex:number = 1;
  1. 声明一个方法接收msg,将log编号和msg打印出来
logIt(msg:string) {
        console.log('#${{logIndex++}} ${msg}');
    }


  1. 简要调用所有生命周期钩子
import {
  AfterContentChecked,
  AfterContentInit, AfterViewChecked,
  AfterViewInit,
  Component,
  DoCheck,
  Input,
  OnChanges,
  OnDestroy,
  OnInit,
  SimpleChanges
} from '@angular/core';

let logIndex: number = 1;



@Component({
  selector: 'app-life',
  templateUrl: './life.component.html',
  styleUrls: ['./life.component.css']
})

export class LifeComponent implements
  OnInit, OnChanges, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, OnDestroy {


  @Input ()
  name: string ;
  logIt(msg: string) {
    console.log('#${{logIndex++}} ${msg}');
  }

  constructor() {
    this.logIt('name在constructor中的值是:' + name);
  }

  ngOnInit() {
    this.logIt('ngOnInit');

  }
  ngOnChanges(changes: SimpleChanges): void {
    let name = changes['name'].currentValue;
    this.logIt('ngOnChanges:' + name);
  }
  ngAfterContentChecked(): void {
    this.logIt('ngAfterContentChecked');

  }

  ngAfterContentInit(): void {
    this.logIt('ngAfterContentInit');

  }

  ngAfterViewChecked(): void {
    this.logIt('ngAfterViewChecked');
  }

  ngAfterViewInit(): void {
    this.logIt('ngAfterViewInit');
  }

  ngDoCheck(): void {
    this.logIt('ngDoCheck');
  }



  ngOnDestroy(): void {
    this.logIt('ngOnDestroy');
  }

}
<app-life [name]="title"></app-life>
生命周期钩子的调用顺序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容

  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 3,540评论 0 6
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,050评论 0 29
  • VUE Vue :数据驱动的M V Vm框架 m :model(后台提供数据),v :view(页面),vM(模板...
    wudongyu阅读 5,401评论 0 11
  • 生成vue的实例 var vm=new vue({//这里是选项 他可以包含数据、模板、挂载元素、方法、生命周期钩...
    麦子_FE阅读 1,011评论 1 11
  • 什么是生命周期钩子 简单点来说生命周期钩子就是Angular中一个组件从被创建到销毁期间的一些有意义的关键时刻.这...
    快乐女孩筱梅阅读 527评论 0 0