【问题标题】:Angular ngIf issue (IE11)角度 ngIf 问题(IE11)
【发布时间】:2021-05-31 11:12:39
【问题描述】:

我对 ngIf 有疑问(ngswitch、ngstyle 和其他可以隐藏或显示元素的东西)
所以问题很简单。在 IE11 中,每个使用 .ts 文件中的变量的条件都只获取第一个值。

在我的情况下,我需要在向服务器发送请求时显示加载程序,并且当我收到答案时我应该隐藏它。我有一个组件

<my-loader-example-component *ngIf="someService.isRequestInProcess"></my-loader-example-component>

当我发送请求时,我将 isRequestInProcess 更改为 true,并且在 Chrome 中它可以正常工作(加载程序显示),但在 IE 中不是。我尝试了很多解决方案,但没有任何效果(ngswhich、ngstyle、ngclass).....

附:控制台没有错误

角度:11;
已启用 IE11 支持

UPD:__________ 我尝试对*ngIf 使用自定义指令,我发现该指令仅在 IE11 中调用 ONCE

【问题讨论】:

  • 哪个版本的角度?你有enabled 支持吗?此外,支持将是dropped in angular v13
  • 还要查看.browserslistrc文件,需要开启对IE 11的支持
  • @SurajRao Angular 11,是的,我启用了 IE11 支持
  • 请检查polyfills.ts 以及
  • 我在polifill.ts中看到了这一行

标签: angular


【解决方案1】:

*ngIf 由于某种原因在 IE 中经常出现问题。每当我想要一个加载器时,我只需创建一个隐藏类并使用它。

.hidden {
    display: none; 
 }

在你的组件中:

<my-loader-example-component 
[class.hidden]="!(someService.isRequestInProcess)">

</my-loader-example-component>

显示设置为无并不总是必须发生。您可以调整它以使其表现不同,例如 0 不透明度、不可见、全高、全宽等。

【讨论】:

  • 感谢您的回答,该解决方案的工作原理相同,它只是获取 someService.isRequestInProcess 的第一个值,因此它始终隐藏或始终显示
  • 那么我建议要么手动隐藏/显示它,要么使用 RXJS 的 Behavior Subject 来创建一个布尔可观察对象。
【解决方案2】:

问题在于包含 shadydom polyfill,它破坏了所有指令

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 2018-04-25
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2015-09-01
    相关资源
    最近更新 更多