Angular *ngIf导致浏览器崩溃

Angular *ngIf导致浏览器崩溃,angular,Angular,在我的一个模板中,我有如下条件: <span *ngIf="(authService.isAuthenticated() | async)"> .. </span> isAuthenticated() { return new Promise((resolve, reject) => { if (firebase.auth().currentUser) { resolve(true); this.update

在我的一个模板中,我有如下条件:

<span *ngIf="(authService.isAuthenticated() | async)"> .. </span>
 isAuthenticated() {
    return new Promise((resolve, reject) => {

      if (firebase.auth().currentUser) {
        resolve(true);
        this.updateToken();
      } else {
        resolve(false);
      }

    });
  }

为什么这会导致浏览器崩溃?

您不能直接从组件执行服务方法

在component.ts中定义一个布尔变量,并根据服务值进行设置

 isAuthenticated = false;
并通过调用您的服务来更改变量。将您的HTML更新为

<span *ngIf="isAuthenticated"> .. </span>

没有任何JavaScript代码会使浏览器崩溃,尽管可能是错误的。如果浏览器崩溃,那就是浏览器中的一个错误。@JBNizet什么?!!?这是完全错误的。使用JS使浏览器崩溃的方法有很多。最简单的:对于let i=0;i> 0;i++{。有时你会终止进程,大多数情况下这并不重要,因为你无论如何都要重新启动浏览器。@edzillion,这是一个难题。如果它使你的浏览器崩溃,情况会比我想象的更糟。但是,即使使用>=而不是>>来进行无限循环,我的浏览器也不会崩溃。该选项卡会变得无响应,我该怎么办所以算作一个bug,其他的都能正常工作。这远远不是崩溃。我想你那时没有打开一百万个标签!大多数时候,当我像这样崩溃浏览器时,它不会回来。你说的在抽象层面上可能是对的,但在现实世界中完全是错的。假设你使用的是chrome,打开你的任务manager/activity monitor或其他什么,找到消耗100%CPU的chrome助手进程,杀死它,然后关闭选项卡。我只是用你的固定示例这样做了,没有问题。chrome不会崩溃。我认为你可以,如果你有constructorpublic authService:…{}。不过这可能不是个好主意。
constructor(public authService: yourAuthService) { }