Angular2 - 如何在服务中初始化数据?
Angular2 - 如何在服务中初始化数据?
我有两个服务。\"login.service.ts\" 和 \"environment-specific.service.ts\"。\n在 \"login.service.ts\" 中,我需要从 \"environment-specific.service.ts\" 初始化一个 Json 对象,该对象传递了几个链接。\n这个用例是如何在服务中使其正常工作,而不使用 \"ngOnInit(){}\",因为根据 Angular2 生命周期钩子,不能在服务中使用 \"ngOnInit()\"。\n在这里,你可以找到我必须在 \"login.service.ts\" 中初始化的部分 - 当然不包括 \"ngOnInit()\" 方法:\n...\nimport { EnvSpecific } from \'../models/env-specific\';\nimport { ActivatedRoute } from \"@angular/router\";\n@Injectable()\nexport class LoginService {\n link1: string;\n link2: string;\n link3: string;\n constructor(private http: Http, private fbuilder:FormBuilder, private route: ActivatedRoute) { }\n ngOnInit(){\n this.route.data\n .subscribe((data: { envSpecific: EnvSpecific }) => {\n this.link1 = data.envSpecific.link1;\n this.link2 = data.envSpecific.link2;\n this.link3 = data.envSpecific.link3;\n });\n }\n ...\n ...\n}\nand I would like to pass the link(s) to the URL passed to different \"http.post\" API call. e.g:\n...\nvar obsRequest = this.http.post( this.link1, serializedForm, this.options )\n...\nThe Error is clear: \"link1 is undefined\" \nAny suggestion or a hint please?
Angular2中如何在服务中初始化数据?
你可以通过应用程序初始化在使用服务之前首先初始化你的服务。可以通过使用APP_INITIALIZER来实现,具体可以参考以下链接:
- [https://devblog.dymel.pl/2017/10/17/angular-preload/](https://devblog.dymel.pl/2017/10/17/angular-preload/)
- [Angular: How to correctly implement APP_INITIALIZER](https://stackoverflow.com/questions/49707830)
通过使用APP_INITIALIZER,你可以在应用程序加载时调用一个函数来初始化你的服务,并确保服务在使用之前已经准备好了数据。这样可以避免在服务中使用未初始化的数据导致错误的情况发生。