为什么我在Angular应用中收到多个http请求?

时间:2018-09-21 01:31:56

标签: angular http

我正在使用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}}?

0 个答案:

没有答案