Angular 带有[隐藏]的角度加载微调器不更新

Angular 带有[隐藏]的角度加载微调器不更新,angular,typescript,angular-material,Angular,Typescript,Angular Material,我的程序中有一个角度材质加载微调器,在调用RESTAPI时显示该微调器。当promise解析时,visible变量被设置为false,微调器应该消失 我的问题是微调器在再次设置为false时不会更新。我必须手动触发按钮或其他东西上的工具提示,然后页面才会隐藏微调器 我知道变量设置正确,但页面不会在微调器状态消失时更新它。显示正确 是否在同一个函数中设置和取消设置状态 这是模板 <div [hidden]="!visible" class="row justify-content-cente

我的程序中有一个角度材质加载微调器,在调用RESTAPI时显示该微调器。当promise解析时,visible变量被设置为false,微调器应该消失

我的问题是微调器在再次设置为false时不会更新。我必须手动触发按钮或其他东西上的工具提示,然后页面才会隐藏微调器

我知道变量设置正确,但页面不会在微调器状态消失时更新它。显示正确

是否在同一个函数中设置和取消设置状态

这是模板

<div [hidden]="!visible" class="row justify-content-center">
      <mat-spinner></mat-spinner>
</div>
但微调器仍然存在,以及现在绘制的所有图表:


我怎样才能解决这个问题?微调器应该不再可见,但它只有在我将鼠标悬停在按钮或其他元素上后才会消失。

您可能在组件中使用OnPush策略。注入ChangeDetectorRef并尝试调用它的detectChanges方法

为什么不使用*ngIf=visible或[style.display]=visible?”块“:“无”而不是[隐藏]=!看得见的ngIf将销毁该组件并将其从DOM中删除,style.display将使用CSSI将其隐藏。所有这些都尝试过,同样的情况也会发生。它只有在我将鼠标悬停在按钮上或执行其他操作后才会更新,但如果我不这样做,微调器将永远保留。请显示更多代码好吗?这个问题目前很难确定,大家只能猜测。是否禁用了更改检测?您正在使用ChangeDetectionStrategy.OnPush?谢谢。我将changeDetection调整为默认设置,现在它按预期工作。我现在确实遇到了一个相关问题:微调器动画经常重新启动,看起来像是在跳跃。这不会在推送时发生。动画可能重新启动了很多次。我该怎么办?我就是这么说的。不要一推就取下。将visible设置为false后,只需调用detectChanges。不幸的是,detectChanges和markForCheck都不起作用。请为位于微调器内的div指定固定宽度和高度。
this.httpService.getData(data).then(receivedData => {
    [...]
    this.visible = false;    // this is called correctly, but does not change the visibility.