我在 Angular 应用程序上使用 Guard 来解析初始关键数据。在 Angular 的第 4 版上,我是这样处理的:
// app.routing.ts
routing = [{
path: '', component: AppComponent, canActivate: [ResolveGuard],
}];
// resolve.guard.ts
@Injectable()
export class ResolveGuard implements CanActivate {
constructor(
private _api: ApiService,
) { }
canActivate(): any {
return this._api.apiGet('my/url').map(response) => {
if ( response.status === 'success') {
// Consume data here
return true;
}
return false;
}).first();
}
}
由于Angular 5 上的新版本 Http不再使用该.map()
属性,因此这不起作用。
如果我更改.map()
它.subscribe()
不会引发任何错误,但应用程序永远不会正确解决。另一方面,使用.first()
和/或.map()
抛出一些错误,正如在这个版本中所预期的那样。
在这种情况下我该怎么办?
仅当加载初始数据时,我才需要激活该路由。
编辑以添加有关该apiGet
功能的信息:
constructor(private _http: HttpClient) {}
public apiGet(url: string): any {
return this._http
.get(this.apiUrl + url)
.catch(this.handleError.bind(this));
}