Angular 角度按钮禁用/启用返回不适用于Formly(反应式窗体)

Angular 角度按钮禁用/启用返回不适用于Formly(反应式窗体),angular,disabled-control,Angular,Disabled Control,提前谢谢你帮我解决这个问题 我无法启用返回按钮,我有3个组件,其中需要禁用的实际按钮存在于一个组件中 流量: 在组件加载时,会显示一个弹出窗口,该窗口来自组件C,单击组件C中的“批准”按钮,在组件B发射器函数中单击,我在该函数中发出布尔值为false,并在组件A中订阅它,并将该值分配给使按钮禁用的属性,但按钮仍仅处于禁用模式。组件A中的本地属性也被分配为false,但按钮仍表示仅处于禁用模式 我使用了boolean类型的BehaviorSubject,并将初始值设置为null 组件:A .htm

提前谢谢你帮我解决这个问题

我无法启用返回按钮,我有3个组件,其中需要禁用的实际按钮存在于一个组件中

流量:

在组件加载时,会显示一个弹出窗口,该窗口来自组件C,单击组件C中的“批准”按钮,在组件B发射器函数中单击,我在该函数中发出布尔值为false,并在组件A中订阅它,并将该值分配给使按钮禁用的属性,但按钮仍仅处于禁用模式。组件A中的本地属性也被分配为false,但按钮仍表示仅处于禁用模式

我使用了boolean类型的BehaviorSubject,并将初始值设置为null

组件:A

.html

<button[disabled]="(processing$ | async)" kendoButton>

.ts

processing$ = new BehaviorSubject < boolean > (false);

ngOnInit() {
  this.userMessageService.currentQRMApprovedStatus.
  subscribe(
    isQRMApproved => {
      if (isQRMApproved)
        this.processing$.next(false);
    });
}
处理$=新行为主体(false);
恩戈尼尼特(){
this.userMessageService.currentQRMApprovedStatus。
订阅(
isqrmaprofed=>{
如果(isqrmaprofed)
this.processing$.next(false);
});
}

组件B、C没有问题,其中C组件通过函数将事件发射器返回给B组件。B组件:OnConfigrmPopupClose(isOk:boolean):void{if(isOk){this.userMessageService.updateQRMApprovedState(false);}你试过changeDetectionRef吗?@Puriajahanbani:谢谢你的帮助,我试过了,但按钮仍然只停留在禁用的模型中,为了测试,我也使用了表达式绑定:{{(processing$|async)}},它返回我false,这是正确的。我添加了setInterval(()=>{//要求更新视图this.changeDetectorRef.markForCheck();},1000);在构造函数中,并添加了changeDetection:ChangeDetectionStrategy.OnPush,但运气不佳。我建议您向父组件添加一个测试按钮,并用它记录表单。检查表单是否有效。如果表单有效但按钮没有响应,则可能Dom没有更改,您应该运行cdr.changeDetection().但如果表单无效,则可能需要在typescript中修复核心逻辑。