angular - 在 sidenav 中编辑表单后重新获取/重新加载组件中的数据
问题描述
我有一个组件调用 startpage 和一个 sidenav 组件来添加/编辑项目到 startpage。两个组件在 app.component.html 上都有选择器。在 sidenav 组件中添加/编辑项目后,我想重新加载起始页组件的数据。我已经使用路由器上的导航,使用ngOnInit
但没有任何反应。那么我能做些什么来解决我的问题呢?
*注:我在startpage中放的数据显示在mat-grid-list
or中mat-table
(我有一个mat-button-toggle
要改变显示的方式)
解决方案
您可以通过使用下面的示例代码之类的服务来做到这一点。我会给你一个例子,所以希望你能够根据你的要求使用它。
首先创建如下服务:
import { Injectable } from '@angular/core';
import {Subject } from 'rxjs';
@Injectable()
export class DataService {
subject$: Subject<any> = new Subject<any>();
constructor() { }
refreshData() {
this.subject$.next();
}
}
然后在您EventypeSidenavComponent
使用它时:
export class EventypeSidenavComponent implements OnInit {
constructor(private dataService: DataService) { }
ngOnInit() {
}
edit() {
this.dataService.refreshData();
}
}
然后StartpageComponent
您必须使用该服务,例如:
export class StartpageComponent implements OnInit {
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.subject$.subscribe(() => {
//refresh your data here
});
}
}
也可以在这里找到演示。
您可以根据您的要求匹配此样本。
推荐阅读
- python - 熊猫漂浮在扩展窗口中不能被强制
- java - 恶意代码漏洞 - 可能通过返回对 int[] 的可变对象的引用来暴露内部表示
- java - 尝试设置颜色的 alpha 值会改变颜色
- r - 多面板网络图使用循环?
- python - 无法在 Bep20 代币上获取准确的代币数量
- visual-studio-code - 带有 Julia 扩展的 VS Code 永远不会完成
- wordpress - 如何在 Wordpress 上为唯一用户创建客户区?
- visual-studio-2019 - Visual Studo 2019 可以在项目根目录中打开文件吗?
- php - 如何从列中提取数据并插入数组并添加值
- ios - Swift - 滚动视图中的内容被砍掉