初始化數據具有一些特性,這對任何組分負載之前被初始化服務(它們用作參數,以其他HTTP調用)。用於調用以下方法的路由CanActivate方法,該方法應在屬性初始化後檢索true,或在錯誤時檢索爲false。我收到編譯錯誤:聲明類型既不是「無效」也不是「任何」的函數必須返回一個值。我怎樣才能避免這個錯誤?如何在角2
public setupSession(): boolean {
this._http.get('myservice_url')
.map (
(response: Response) => <any>response.json())
.subscribe (
data => {
this.property1 = data.property1;
this.property2 = data.property2;
return true;
},
err => {
console.error(err)
return false;
}
)
}
編輯: @K。 Daniek感謝您的幫助!我在這篇文章的幫助下找到了解決方案link。現在我可以確保設置完成之前任何其他http調用。
的服務方法:
public setupSession(): Promise<any> {
var observable = this._http.get('myservice_url')
.map((response: Response) => {
var res = response.json();
return res;
});
observable.subscribe(data => {
this.property1 = data.property1;
this.property2 = data.property2;
});
return observable.toPromise();
}
canActivate方法:
canActivate() {
return this._sessionService.setupSession().then(() => {
return true;
});
}
在這種情況下,我怎麼能檢索canActivate價值?如果我不使用canActivate,那麼在我將它們用作其他http調用的參數之前,屬性將不會被初始化。 – Victor
在第二種情況下,您會在收到實際數據之前檢索布爾值。 – Victor
@Victor檢查我編輯過的帖子。 –