Angular4组件交互笔记

2017-11-26  本文已影响0人  HelloWorld1992
组件交互这节一共有七个子标题:
其中最常用的是以下两个:
  1. 通过输入型绑定把数据从父组件传到子组件
  2. 父组件监听子组件的事件
对于这两个的理解

下图展示了父子组件通信的方式:

用以下代码体现上图即:

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

@Component({
  selector: 'app-parent',
    template: `
      <app-child 
        [fruit]="fruit"    
        (onTold)="listen($event)">
      </app-child>
      <p>{{word}}</p>
    `
})

export class ParentComponent {
  fruit: string = 'apple';
  word: string;
  listen(news: string) {
    this.word = news;
  }
};

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

@Component({
  selector: 'app-child',
    template: `
      Parent give child an {{fruit}},
      <button (click)="tell(message)">Tell Parent</button> 
      that I like it.
    `
})

export class ChildComponent {
  @Input() fruit: string;
  @Output() onTold = new EventEmitter<string>();
  message: string = 'I really like it!';
  tell(information: string) {
    this.onTold.emit(information);
  }
};

总结一下父子组件通信:
数据从父组件流向子组件:父组件class的属性→父组件的模板→子组件的@Input属性;
数据从子组件流向父组件:子组件的@Output属性→父组件的模板→父组件class的事件处理器方法。子组件自身的事件被触发时,在自身事件处理器中向上弹射自定义事件(或者说向上触发自定义事件),父组件通过监听这个自定义事件接收数据。

以上是我对父子组件通信方式的理解。
图片引用自知乎: https://zhuanlan.zhihu.com/p/29610405
除了Angular官网,额外参考的文档也是上面这个网址,文章写得很好,建议阅读。

上一篇下一篇

猜你喜欢

热点阅读