javascript - angualr2中emit触发一个方法然后怎么获得这个promise的结果

查看:146
本文介绍了javascript - angualr2中emit触发一个方法然后怎么获得这个promise的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在写了一个direactive来代替click操作,在点击后按钮disable掉,比如click是调用登陆的方法,在登陆service的promise结束后恢复按钮。
现在可以模拟click,把按钮disabled,但是获得不到promise的结果,请问有没有什么好的方法?

//directive (大概的代码)

@Output() czClick  = new EventEmitter();
@HostListener("click",["$event"])
    onClick(e){
        this.renderer.setElementAttribute(this.element.nativeElement,'disabled','true');
        this.czClick.emit(e);
      
    }

//html
<button cz-click (czClick)="login()">登录</button>

主要就是this.czClick.emit(e);这边获得不到login的promise结果,就不能在结束状态修改button的效果。

求教0-0

解决方案

EventEmitter应该没办法获得获得响应结果,毕竟emit一个事件可能会有n个监听这个事件的元素

可以考虑对参数下手,emit一个{ e, callback }的对象出去,在事件响应方法里调用这个callback

更好的方法应该是在directive上加个@Input,再implements OnChanges接口,监听这个@Input属性变化
然后在component里绑定这个@Input属性吧

这篇关于javascript - angualr2中emit触发一个方法然后怎么获得这个promise的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆