angular@Output用法

2019-10-08  本文已影响0人  春木橙云

子组件中的内容如何传递出去给父组件使用呢?@Output用法整理如下,以备后查!

angular提供了EventEmitter用来触发自定义事件。子指令创建一个 EventEmitter 实例,并将其作为输出属性导出。子指令调用已创建的 EventEmitter 实例中的 emit(payload)方法来触发一个事件,父指令通过事件绑定(eventName)的方式监听该事件,并通过 $event 对象来获取payload对象。

具体用法如下:

//parent.component.ts
import { Component, Input } from '@angular/core'

@Component({
    selector: 'parent',
    templateUrl: './parent.component.html'
})

export class ParentComponent {
  getChildData(data){
    console.log('childData传进来了', data)
  }
}

//parent.component.html
    <div>
        <child (putChildData)="getChildData($event)"></child>
    </div

//child.component.ts
import { Component, Input } from '@angular/core';

@Component({
  selector: 'child',
  templateUrl: './child.component.html'
})

export class ChildComponent {
  childData={
    childString: 'output'
  }
  @Output() putChildData: <EventEmitter>any = new Eventmitter<any>();
   ngOnInit(){
    this.putChildData.emit(this.childData);
   }
}

另外,Output 装饰器支持一个可选的参数,用来指定组件绑定属性的名称。如果没有指定,则默认使用 @Output 装饰器,装饰的属性名。

the end!

上一篇 下一篇

猜你喜欢

热点阅读