angular - Angular 5 - 从另一个组件更改变量
问题描述
我有一个ParentComponent
包含ChildComponent
另一个的ChildComponent
(ResultList
在侧边栏中)
在ParentComponent
我打开一个与侧边栏中类似的对话框ResultList
- 从技术上讲,它是相同的组件 - 但它有更多项目。我尝试在对话框中选择一些值,然后我想将它们推送到ResultList
侧边栏中的第一个再次。
现在我正在尝试将resultList
变量传递给每个组件以在侧边栏中更新我的列表,但这似乎有点复杂。
如果您(希望)理解我的问题 - 您还有其他想法如何从模态对话框更新我的侧边栏组件?
如果您还有其他问题 - 请询问:)
解决方案
我建议在您想要获得更新的所有组件中使用Service
带有BehaviorSubject
暴露asObservable
和ing 的 asubscribe
resultList
所以你会有一个服务:
import { BehaviorSubject, Observable } from 'rxjs';
...
export class ResultListService {
private resultList: BehaviorSubject<any[]> = new BehaviorSubject<any[]>(null);
public resultList$: Observable<any[]> = this.resultList.asObservable();
updateResultList(updatedList) {
this.resultList.next(updatedList);
}
}
在对话框组件中,您将使用该updateResultList
方法并将updatedResultList 传递给它:
constructor(..., private resultListService: ResultListService) {}
...
this.resultListService.updateResultList(updatedResultList);
现在在您想要更新的任何组件中,resultList
只需subscribe
从:resultList$
ResultListService
constructor(..., private resultListService: ResultListService) {}
...
this.resultListService.resultList$
.subscribe(resultList => console.log('This is the updated resultList: ', resultList));
推荐阅读
- r - 是否可以定义一个“函数”并将其插入“公式”以在 R 中构造一个“model.frame”?
- r - 使用“setkey”函数将表与 R 中的常用值连接起来
- prisma - Prisma.io 多对多关系会产生错误
- python - Python iter 函数在没有正常函数的标记值的情况下无法工作
- python - OpenCV:AssertionError:图像不是 np.ndarray
- javascript - Webpack 无法加载 *.sass 文件
- lua - 如何正确地进行自定义降价标记
- javascript - 泛型函数继承keyof值
- regex - 如何在 GtkSourceBuffer 中进行正则表达式搜索
- javascript - 在 PHP 中更新和传递值