import { NgModule } from '@angular/core'; import { APOLLO_OPTIONS } from 'apollo-angular'; import { ApolloClientOptions, ApolloLink, concat, InMemoryCache, } from '@apollo/client/core'; import { HttpLink } from 'apollo-angular/http'; import { environment } from '../environments/environment'; const uri = environment.apiUrl + '/graphql'; // <-- add the URL of the GraphQL server here const cleanTypeName = new ApolloLink((operation, forward) => { if (operation.variables) { const omitTypename = (key: string, value: any) => key === '__typename' ? undefined : value; operation.variables = JSON.parse( JSON.stringify(operation.variables), omitTypename ); } return forward(operation).map((data) => { return data; }); }); export function createApollo(httpLink: HttpLink): ApolloClientOptions { return { link: concat(cleanTypeName, httpLink.create({ uri })), cache: new InMemoryCache({}), }; } @NgModule({ providers: [ { provide: APOLLO_OPTIONS, useFactory: createApollo, deps: [HttpLink], }, ], }) export class GraphQLModule {}