Javascript 如何向角度组件添加自定义方法?

Javascript 如何向角度组件添加自定义方法?,javascript,angular,ionic-framework,Javascript,Angular,Ionic Framework,我使用的是Ionic框架,我为Ionion button组件创建了一个新的指令,它实际上禁用了按钮,然后在流程完成时重新启用它(假设这是一个保存过程) 这是我的按钮模板 接受 [submitButton]是我指令中的一个输入,用于启用单击侦听器 我可以使用@HostListener单击后禁用按钮并修改其内容 @HostListener('click')onButtonClick(){ 常数喷丝头含量=`` 如果(此.isSubmitButton){ 常数喷丝头含量=`` this.butto

我使用的是Ionic框架,我为Ionion button组件创建了一个新的指令,它实际上禁用了按钮,然后在流程完成时重新启用它(假设这是一个保存过程)

这是我的按钮模板


接受
[submitButton]
是我指令中的一个输入,用于启用单击侦听器

我可以使用
@HostListener
单击后禁用按钮并修改其内容

@HostListener('click')onButtonClick(){
常数喷丝头含量=``
如果(此.isSubmitButton){
常数喷丝头含量=``
this.buttonElement.disabled=true;
const btchildren=this.el.nativeElement.children;
this.oldElement=this.el.nativeElement.cloneNode(true);
为了(让孩子成为孩子的孩子){
this.renderer.removeChild(this.el.nativeElement,child);
}
this.el.nativeElement.innerHTML=喷丝头内容;
}
}
问题是如何在保存过程完成后实现何时重新启用按钮。我正在使用RxJS将数据保存在
acceptRequest()
方法中。假设我正在保存到API,并重新启用该按钮

我知道的一些例子是
ionrefresh
,我们可以很容易地调用
event.target.complete()
来完成加载微调器并从页面隐藏刷新器

多谢各位

编辑:
我知道在按钮内部使用[disabled]比使用指令更容易,但我需要更改元素的子节点,并且可以轻松使用。因此,我考虑使用指令作为解决方案。

您可以查看子按钮,并将其转换为指令,同时在指令上公开API以停止微调器(并重新启用所需的一切)

在指令中,添加要公开的函数,然后在组件中的模板上添加#myBtn:

然后,在完成API调用后,可以对刚刚创建的指令调用函数(
this.myBtn.stopSpinner()


这是一个新的作业

对不起,我想我遗漏了问题中的一些内容。在主机侦听器上,它不仅禁用按钮,还使用微调器更改按钮内的DOM。我修改了问题,希望你能进一步帮助我。不管怎样,谢谢你的回答。@EvanGunawan-我已经更新了答案它正在工作!谢谢你的回答。向上投票。是否有其他方法可以从按钮事件本身访问这些方法?像其他ionic组件一样,我们可以从模板传递事件,然后从那里执行
event.target.complete()
?也许你可以创建一个输出并返回一个主题,然后你就可以完成,我以前从来没有这样做过,所以在这方面无法提供帮助(我主要选择我在回答中给出的选项)
<ion-button #myBtn fill="clear" color="primary" expand="block" (click)="acceptRequest()" [submitButton]="true">
    ACCEPT
</ion-button>
@ViewChild("myBtn", { read: SubmitDirective }) myBtn: SubmitDirective;