2017-06-25 180 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