Angular服务调用报错:Cannot read properties of undefined (reading 'getInit')
Angular APP_INITIALIZER 报错:Cannot read properties of undefined (reading 'getInit')
问题原因
报错核心是APP_INITIALIZER的工厂函数未正确传递依赖的AppInitService实例。当前app.module.ts中useFactory: () => initializeApp的写法,仅返回了initializeApp函数本身,但没有将Angular注入的AppInitService实例传递给该函数,导致initializeApp执行时参数appInitService为undefined,进而无法调用getInit方法。
解决方案
修改app.module.ts中的APP_INITIALIZER配置,确保依赖实例能传递到初始化函数:
providers: [ AppInitService, { provide: APP_INITIALIZER, // 调整工厂函数,将注入的AppInitService传递给initializeApp useFactory: (appInitService: AppInitService) => () => initializeApp(appInitService), deps: [AppInitService], multi: true } ]
可选优化
可以简化initializeApp函数的写法(因为getInit本身已返回Promise):
export function initializeApp(appInitService: AppInitService): Promise<any> { return appInitService.getInit().catch(err => { console.log(err); return Promise.reject(err); }); }
内容的提问来源于stack exchange,提问作者Rijo
相关产品推荐
相关产品推荐

