我决定将GraphQLModule
创建的ng add apollo-angular
包装到我们自己的Angular Shared Module中。
https://www.apollographql.com/docs/angular/basics/setup/#installation-with-angular-schematics
在此模块内执行查询时,我收到了服务器的响应。
但是,当在另一个应用程序中使用此模块时,我们没有收到任何响应或错误:
myQuery = gql`
{
member {
id
details {
id
}
}
}
`
queryOptions: WatchQueryOptions = {query: this.myQuery, errorPolicy: 'all'}
myQueryObs: Observable<any>
constructor(private apollo: Apollo) {}
ngOnInit() {
this.myQueryObs = this.apollo.watchQuery<Query>(this.queryOptions)
.valueChanges.pipe(map (results => {
if (results.errors) {
console.log('ERRORS!!! YAY!!!') // NEVER GET HERE
}
console.log('RESULTS') // NEVER GET HERE EITHER
}));
}
我已经将废话记录下来了,无法确定为什么它根本没有回应。它的行为就像根本没有实例化Apollo一样,但是控制台输出证明并非如此。
任何建议或帮助都将不胜感激!
答案 0 :(得分:0)
好的,答案很简单。上面的示例返回一个observable
,这就是为什么没有结果的原因。我仍然需要subscribe
到observable
才能获得结果。因此,要获得结果,最好是:
this.apollo
.watchQuery(this.queryOptions)
.valueChanges.subscribe((result: any) => {
console.log('++++++++ RESULTS +++++++++', result)
});