首页 文章

从Observable可观察到

提问于
浏览
1

在Angular中,我在组件内部使用模态指令,当模态关闭时,它会发出 onHide 事件(EventEmitter) .

这个组件是一个对话框组件,它的模板定义了一个对话框,Modal Directive(下面的bsModal)使它成为模态 .

<div bsModal #modal="bs-modal" class="modal fade" role="dialog" tabindex="-1" [config]="{backdrop: 'static',keyboard:'false'}">
...
</div>

当Modal Directive发出 onHide 事件时,我需要从组件输出 close 事件 .

这是我的方式:

export class DialogComponent implements OnInit {
    @ViewChild('modal') modal: ModalDirective;
    @Output() close = new EventEmitter<any>(); // Component's close event emitter
    ...
    ngAfterViewInit() {
        this.modal.onHide.subscribe(() => {
            this.close.emit();
        });
    }
    ...
}

有些东西告诉我_1145414_ s close 事件基于指令的 onHide observable,这将使我免于订阅指令的 onHide .

那更好的方法是什么?

1 回答

  • 2

    好吧,我认为没有比现在更好的方法 . 但是你可以把它缩短一点 .

    ngAfterViewInit() {
      this.subscription = this.modal.onHide.subscribe(this.close);
    }
    

    请注意,我假设 onHide 永远不会完成,也不会出错 .

    另一件需要注意的事情是,您需要在组件被销毁时取消订阅 .

    onDestroy(): void {
      this.subscription.unsubscribe();
    }
    

    类似的问题:Pipe RxJS observable to existing subject

相关问题