2017-06-25 129 views
0

在我的模板我有如下的条件:* ngIf导致浏览器崩溃

<span *ngIf="(authService.isAuthenticated() | async)"> .. </span> 

的isAuthenticated()函数的定义如下:

isAuthenticated() { 
    return new Promise((resolve, reject) => { 

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

    }); 
    } 

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

+0

没有JavaScript代码,因为不正确的可能是,应该崩溃的浏览器。如果浏览器崩溃,这是浏览器中的一个错误。 –

+0

@JBNizet什么?!!?这完全不正确。有很多方法可以让JS浏览器崩溃。最简单的:for(let i = 0; i> 0; i ++){'。有时你会杀死进程,大部分时间无关紧要,因为无论如何你必须重新启动浏览器。 – edzillion

+0

@edzillion这是一个noop。如果它使你的浏览器崩溃,它甚至比我想象的还要糟糕。但是即使使用'> ='而不是'>',为了实现无限循环,我的浏览器不会崩溃。该选项卡变得没有反应(IMO,也应该算作一个错误),其他人保持正常工作。这远不是一场崩溃。 –

回答

1

您无法直接从组件执行服务方法。

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

isAuthenticated = false; 

并通过调用您的服务来更改变量。更新您的HTML作为,

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

该如何注入你authService到您的组件,

constructor(public authService: yourAuthService) { } 
+0

我想你*可以*,如果你有'构造函数(public authService:...){}'。虽然这可能不是一个好主意。 – jonrsharpe