小编Tes*_*act的帖子

等待 Angular 的 EventEmitter

是否可以等待 Angular EventEmitter 发出,就像可以等待 ajax 调用(Angular 5 同步 HTTP 调用)一样?

我想做的是:

有一个子组件

@Component({
  template: '<button (click)="emit1()">emit</button>'
})
export class ChildComponent {
  @Output() dataChanged: EventEmitter<number> = new EventEmitter<number>(true);  // synchronous

  emit1(){
    this.dataChanged.emit(1)
  }
}
Run Code Online (Sandbox Code Playgroud)

以及动态创建子组件的父组件

@Component()
export class ParentComponent {
  childComponentRef: ComponentRef<ChildComponent>

  constructor(private resolver: ComponentFactoryResolver, private vcRef: ViewContainerRef) {}

  openChild() {
    const factory = this.resolver.resolveComponentFactory(ChildComponent);
    this.childComponentRef = this.vcRef.createComponent(factory);
    await this.childComponentRef.instance.dataChanged.toPromise()
    alert('emited!')
  }

}
Run Code Online (Sandbox Code Playgroud)

我想 (a) 等待,直到从子组件发出值。

async-await eventemitter typescript angular

8
推荐指数
1
解决办法
6262
查看次数

标签 统计

angular ×1

async-await ×1

eventemitter ×1

typescript ×1