填写这份《一分钟调查》,帮我们(开发组)做得更好!去填写Home

EventEmitter

Use in components with the @Output directive to emit custom events synchronously or asynchronously, and register handlers for those events by subscribing to an instance.

      
      class EventEmitter<T> extends Subject {
  constructor(isAsync?: boolean): EventEmitter<T>
  emit(value?: T): void
  subscribe(generatorOrNext?: any, error?: any, complete?: any): Subscription
}
    

参见

构造函数

Creates an instance of this class that can deliver events synchronously or asynchronously.

constructor(isAsync?: boolean): EventEmitter<T>
      
      constructor(isAsync?: boolean): EventEmitter<T>
    
参数
isAsync boolean

可选. 默认值是 false.

When true, deliver events asynchronously.

返回值

EventEmitter<T>

方法

Emits an event containing a given value.

emit(value?: T): void
      
      emit(value?: T): void
    
参数
value T

可选. 默认值是 undefined.

The value to emit.

返回值

void

Registers handlers for events emitted by this instance.

subscribe(generatorOrNext?: any, error?: any, complete?: any): Subscription
      
      subscribe(generatorOrNext?: any, error?: any, complete?: any): Subscription
    
参数
generatorOrNext any

可选. 默认值是 undefined.

When supplied, a custom handler for emitted events.

error any

可选. 默认值是 undefined.

When supplied, a custom handler for an error notification from this emitter.

complete any

可选. 默认值是 undefined.

When supplied, a custom handler for a completion notification from this emitter.

返回值

Subscription

使用说明

Extends RxJS Subjectfor Angular by adding the emit() method.

In the following example, a component defines two output properties that create event emitters. When the title is clicked, the emitter emits an open or close event to toggle the current visibility state.

@Component({ selector: 'zippy', template: ` <div class="zippy"> <div (click)="toggle()">Toggle</div> <div [hidden]="!visible"> <ng-content></ng-content> </div> </div>`}) export class Zippy { visible: boolean = true; @Output() open: EventEmitter<any> = new EventEmitter(); @Output() close: EventEmitter<any> = new EventEmitter(); toggle() { this.visible = !this.visible; if (this.visible) { this.open.emit(null); } else { this.close.emit(null); } } }
      
      @Component({
  selector: 'zippy',
  template: `
  <div class="zippy">
    <div (click)="toggle()">Toggle</div>
    <div [hidden]="!visible">
      <ng-content></ng-content>
    </div>
 </div>`})
export class Zippy {
  visible: boolean = true;
  @Output() open: EventEmitter<any> = new EventEmitter();
  @Output() close: EventEmitter<any> = new EventEmitter();

  toggle() {
    this.visible = !this.visible;
    if (this.visible) {
      this.open.emit(null);
    } else {
      this.close.emit(null);
    }
  }
}
    

Access the event object with the $event argument passed to the output event handler:

<zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy>
      
      <zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy>