angular - 从服务的 HTTP 调用返回值以便在父组件中使用的最佳方法?
问题描述
我有一个使用服务的组件,服务内部是对服务器的 HTTP 调用,其中包含有关产品发行说明的数据。发行说明仅作为 JSON 字符串返回。
我希望能够从服务器获取 JSON 值,然后将值从服务返回到首先调用该方法的父类。这样我就可以在父类中使用 JSON 字符串。
我不确定最好的方法是什么。我应该使用带有父类可以访问的 getter 的 BehaviourSubject 吗?如果是这样,我如何调整以下代码以使用行为主题?
服务方式
getLatestReleaseNote() {
let releaseNoteUrl = this._configService.getConfig().releaseNoteUrl;
const currentVersion = this.getCurrentVersion();
releaseNoteUrl += currentVersion.replace(".", "_") + ".json";
const releaseNoteDataStream = this._httpClient.get<string>(releaseNoteUrl).pipe(take(1)); //Need to subscribe or pass to BehaviourSubject
}
或者,我可以只订阅releaseNoteDataStream
observable 并从订阅内部返回值吗?像下面这样?
getLatestReleaseNote(): string {
let releaseNoteUrl = this._configService.getConfig().releaseNoteUrl;
const currentVersion = this.getCurrentVersion();
releaseNoteUrl += currentVersion.replace(".", "_") + ".json";
const releaseNoteDataStream = this._httpClient.get<string>(releaseNoteUrl).pipe(take(1)).subscribe(val =>
{
return val;
});
}
我意识到这是不正确的,但我不确定如何从订阅中返回。
对于第三种选择,我可以在订阅有值时使用 EventEmitter 来发出字符串值吗?
解决方案
你最好的选择是使用Angular EventEmitter。甚至发射器也用于向父组件发送数据。它们可以是同步的,也可以是异步的,以满足您的需求。
此外,您可以只获取父组件中的发行说明,然后使用@Input()装饰器将其传递给子组件。
推荐阅读
- python - 如何将下载的 pdf 文件存储到 Mongo DB
- python - 将字符串连接到从另一个数据帧映射的 MultiIndex 级别
- angularjs - 角度材料布局指令不起作用
- apache-camel - 使用 Apache camel 读取 xml 文件并将其发送到休息服务
- imagemagick - 如何在imagick中实现像翘曲一样的Photoshop
- ios - 使用 UIGraphicsPDFRenderer 创建 PDF 时添加页脚,如“y 页 x”
- node.js - 如何在 Heroku 上部署 reactJS + nodeJS 应用程序?
- django - 如何修复 uWSGI 内部路由?
- java - 带有 NTLM 身份验证的 Spring WebClient
- vue.js - framework7 vue简单项目中路由'/'的参考索引/home/主视图