javascript - 加载两个组件时的Angular 9调用函数
问题描述
我正在尝试拥有两个组件,<app-map>
并且<app-markers-list>
.
<app-map>
加载 Google Maps API 并在页面上显示地图。它发出一个mapLoaded
事件ngAfterViewInit()
@Output() mapLoaded: EventEmitter<boolean> = new EventEmitter();
<app-markers-list>
通过 Angular 的HttpClient
. 它在ObservablemarkersLoaded
结束时发出一个事件。HttpClient.get().subscribe()
@Output() markersLoaded: EventEmitter<boolean> = new EventEmitter();
如何一次捕获这两个事件,以便调用另一个组件的函数,该函数将使用标记填充地图?
解决方案
我认为有一个简单的解决方案。
@Output()
allLoaded = new EventEmitter();
oneLoaded = false;
ngAfterViewInit() {
this.emitAllLoaded();
}
yourFunctionWhereHttpClientGetLocated() {
this.http.get(..).subscribe(() => {
this.emitAllLoaded();
});
}
emitAllLoaded() {
if (oneLoaded) this.allLoaded.emit();
oneLoaded = true;
}
你可能不需要使用 Observable 或 Subject
推荐阅读
- asp.net - AWS - 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
- api - 在 Flutter 中从 web api 获取数据
- spring-boot - 自动记录应用程序事件
- python - 捕获非我的代码异常,并且不离开执行流程
- python - 从python中的文件路径修改文件名的最佳方法是什么?
- excel - 删除图表时删除用于图表系列的命名范围
- java - 如何在静态类中使用 findviewbyid?
- sql - 如何从以前的值中获得百分比变化?
- azure - Azure 搜索查询中的转义点
- python - 以 chrt 优先级执行进程