我正在使用Angular 5.2,并且在向我的api双重加载http请求时遇到问题。仅加载部分视图会导致应用程序出现问题。我将所有要求的数据取回。
我已经进行了研究,并相信我的服务器和浏览器应用程序可能都在发出相同的请求,有人认为Angular的“ TransferState”是解决该问题的好方法。我试图找到一种实现它的方法(即here,但找不到分步教程。
如果您认为确实存在问题,有人可以帮助我找到实施解决方案的方法吗?
如果我错了,我需要继续前进,有人可以帮我弄清楚为什么我似乎对我的api发出了很多相同的请求吗?
在初始加载/登录后,应用中的“我的控制台”如下所示:
XHR finished loading: GET "https://my_api.com/auth/validate_token".
XHR finished loading: GET "https://my_api.com/auth/validate_token".
XHR finished loading: GET "https://my_api.com/sites.json".
XHR finished loading: GET "https://my_api.com/sites.json".
XHR finished loading: OPTIONS "<URL>".
XHR finished loading: OPTIONS "https://my_api.com/auth/sign_in".
XHR finished loading: OPTIONS "https://my_api.com/auth/validate_token".
XHR finished loading: OPTIONS "https://my_api.com/auth/validate_token".zone.js:2019
XHR finished loading: OPTIONS "https://my_api.com/sites.json". zone.js:2019
XHR finished loading: OPTIONS "https://my_api.com/sites.json".zone.js:2019
OPTIONS vs GET指示什么吗?
我的路线如下:
const routes: Routes = [
{ path: 'sites', component: SitelistComponent },
{ path: 'sites/map', component: SitemapComponent },
{ path: 'site/create', component: CreatesiteComponent },
{ path: 'site/:id', component: SitepageComponent },
{ path: 'profile', component: ProfileComponent, canActivate: [AuthGuard]},
{ path: '', pathMatch: 'full', redirectTo: '/sites'},
];
app.module.ts:
providers: [ DataService, NavigationComponent, Angular2TokenService, AuthService, AuthGuard,
{provide: LocationStrategy, useClass: HashLocationStrategy},
{provide: 'api', useValue: 'https://my_api.com/'}
],
environment.ts
export const environment = {
production: false,
token_auth_config: {
apiBase: 'https://my_api.com'
}};
auth.service.ts
getSites(){
return this.authService.get(`sites.json`);
}
(以上仅发生一次,不是问题)
谢谢!我对Angular还是有些陌生,以前从未发生过。让我知道是否可以提供更多信息!
***编辑:我的观察结果如下:
ngOnInit() {
this.authService.getSites()
.map((res:Response) => (
res.json()
))
.subscribe(data => {
this.sites = data
})
将shareReplay()放在哪里?
注意:我在多个组件中都调用了同一件事(getSites()),这是我的问题吗?
还是我多次使用{{site.name}}?