javascript - 在 Angular 6 中,如果路线相同,我将无法再次加载该组件
问题描述
如果路由相同但父组件中的数据已更改,我将无法再次加载组件。我有 route.ts 假设 /module/{name} 对于一个组件,所有路由都写在上面我只更改父组件中的数据,但路由相同,如何处理这种情况
在父组件中,我在 api 调用父组件成功后导航到路由
this.Service.updateInfo(res['Info']);
this.router.navigate([routeUrl] ,{relativeTo: this.route });
并在子渲染中使用路由器插座并使用获取数据表单服务
this.selected = this.Service.InfoData;
服务文件
public updateInfo(data) {
if(data) {
this.InfoData = data;
}
}
但是一旦路线相同,孩子就不会从服务中获取更新的数据。
解决方案
您可以使用 BehaviorSubject 发出数据并使用角度服务将数据从一个组件审核到新组件。在你的情况下,你需要这样..
InfoData = new BehaviourSubject<any>([]);
// inside your service
从子组件订阅 InfoData,当需要更改数据时,只需使用
this.InfoData.next(data) //and it will gives data.
推荐阅读
- json - ionic4 cordova插件http.get接收json,预期传递json,但传递字符串
- vba - 在 VBA 中实现接口的事件
- mysql - mysql命令行不输出结果
- amazon-web-services - 如何在禁用集群模式的情况下从 redis 只读副本读取?
- java - 如何接收来自特定号码的短信消息?
- laravel-5 - 如何在 Laravel 项目中使用 OpenSSL 在 Wamp 中配置本地颁发者证书?
- amazon-web-services - 如何自动化 AWS 数据迁移服务
- node.js - 从docusign下载签名文档为JSON
- ios - 无法使用 FCM 向 iOS 发送静默推送通知
- java - 同时删除firebase数据库和身份验证