使用Angular 2启用AOT编译(Angular universal),在自定义解析器中我收到错误..
未捕获(承诺):错误 错误:未捕获(在承诺中):错误
当我返回HttpClient调用的结果(这只是一个简单的数字)时,问题似乎是孤立的。
如果我关闭服务器端渲染,这一切都能正常工作。以下是代码的摘录。
constructor(private httpClient : HttpClient)
{
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): number | Observable<number> | Promise<number> {
try{
return this.httpClient.get<number>(`/api/something/getnumber`);
}catch(e){
console.log(e);
}
return -1;
}
这是服务器端渲染中的一个基本问题吗?或者我只是缺少启用服务器端渲染所需的一些关键配置?
答案 0 :(得分:1)
这与您获取非json数据的事实有关。将{responseType: 'text'}
添加到您的调用中以指定此内容。
return this.httpClient.get<number>(`/api/something/getnumber`, {responseType: 'text'});
另请参阅文档Requesting non-JSON data
并非所有API都返回JSON数据。假设您要读取服务器上的文本文件。您必须告诉HttpClient您希望得到文本响应:
答案 1 :(得分:0)
尝试下面的代码就是我的例子:
@Injectable()
export class HomeActionResolve implements Resolve<any> {
constructor(private http: Http) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
try {
return this.http.get('assets/json/sample.json');
} catch (e) {
console.log(e);
}
return -1;
}
}
export const HomeRoute: Routes = [
{
path: '',
component: HomeComponent,
resolve: {
'pagingParams': HomeActionResolve
}
}
];