Я только вчера заставил это работать, так что я не большой эксперт в этом, но я думаю, что он делает то, о чем вы просите. В сети я тоже не нашел хорошего примера.
Это вызовет диалог над вашими представлениями с любыми сообщениями, которые вы хотите. Я не включил код диалога, но он находится в моем messagesService.
Обратите внимание, что я оставил там InMemoryCache в качестве примечания для таких ответов, как этот, что он не нужен. Он включен в Boost и настраивается автоматически. Я смог прочитать его с помощью readQuery.
Я выбрал Boost и поместил его в app.module в экспортированном классе, потому что я не мог заставить его работать выше в поставщиках модулей. Первоначально я был настроен так же, как и вы, но добраться до messagesService не удалось. Это также может быть сервис, и я могу его туда перенести. Это глобально, и вам не нужно ничего делать в ваших компонентах. Очень хорошо!
app.module.ts
export class AppModule {
// Create and setup the Apollo server with error catching globally.
constructor(
private messagesService: MessagesService,
private apollo: ApolloBoost,
) {
apollo.create({
uri: 'http://localhost:3000/graphql',
// cache: new InMemoryCache(), // This is included by default. Can be modified.
onError: ({ graphQLErrors, networkError }) => {
if (graphQLErrors) {
graphQLErrors.map(({ message, locations, path }) =>
console.log(
`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`),
console.log('This is a graphQL error!'),
);
const msg1 = 'GraphQL error';
const msg2 = 'Please contact support.';
this.handleError(msg1, msg2)
}
if (networkError) {
console.log('This is a Network Error!', networkError);
console.log('Can be called from a query error in the browser code!');
const msg1 = 'Network error';
const msg2 = 'Please check your Internet connection. If OK then contact support .';
this.handleError(msg1, msg2)
}
}
});
}
public handleError(msg1, msg2) {
this.messagesService.openDialog(msg1, msg2);
}
}
person
Preston
schedule
17.08.2019