【发布时间】:2018-08-21 19:08:35
【问题描述】:
我正在为 graphql 使用 apollo 客户端。我在 AppApolloModule 中设置了我在 AppModule 中导入的客户端。我正在一项服务中进行查询,该服务也直接在 AppModule 中导入。虽然服务在 AppApolloModule 运行之前运行,因此在进行查询时未初始化 apollo,我收到此错误
Error: Client has not been defined yet
AppApolloModule
imports ....
export class AppApolloModule {
constructor(
apollo: Apollo,
httpLink: HttpLink,
private userService: UserService
) {
console.log("apollo module")
apollo.create({
link: httpLink.create({ uri: `${environment.apiBase}/graphql?${this.myService.token}`}),
cache: new InMemoryCache()
})
}
}
应用模块
import { AppApolloModule } from './app.apollo.module';
import { MyService } from './services/my.service';
export class AppModule {
constructor() {
console.log("app module")
}
}
我没有得到两个控制台应用程序模块和 apollo 模块,因为服务首先运行,它没有找到任何已初始化的 apollo 应用程序,因此破坏了代码。
我怎样才能让 apollo 在服务或任何服务之前以高效和标准的方式运行?
【问题讨论】:
-
您是否尝试过使用应用生命周期 OnInit ?尝试实现 OnInit 接口并将您的代码带入 ngOnInit 方法
-
也许看看
APP_INITIALIZERtoken -
@e.m.b 服务没有 ngOnInit
-
我的意思是将模块构造函数中的代码移动到模块中的 ngOnInit 而不是服务中
-
@e.m.b 这也无济于事,因为构造函数首先运行,将其放在 ngOnIt 上会使它们在更多时间后加载
标签: javascript angular graphql apollo graphql-js