angular - 如何在Angular中的路由之间传递非字符串对象?
问题描述
我正在构建一个文件查看器。为此,我有一个名为的组件,该组件在调用FileBrowserComponent
路由时显示/files
。
我在导航时附加了一个查询参数以显示目录的内容。所以要打开一个特定的目录,我用`/files?location=c:/users/xyz/...'调用Router.navigate 。
在组件内部,我订阅了ActivatedRoute.queryParam
,这意味着只要组件处于活动状态,当用户浏览到另一个位置时,我都会收到通知,然后我可以显示文件和文件夹。
在一种情况下,我需要将一个可选的非字符串对象传递给 URL。但我只订阅queryParams
将参数作为字符串提供给我的对象。
我可以订阅哪些其他对象,每当我导航到该路由时触发回调,该路由返回查询参数,包括自定义对象?
解决方案
首先,考虑传递 id,然后从远程端点重新获取对象。
如果这不能应用于您的情况,则创建一个包含该状态的主题:
(注意这是一个在类外声明的常量)
export const someRouteParams$ = new BehaviorSubject<YourObjectTypeHere>({...your defaults here });
您稍后发送要传递的对象:
someRouteParams$.next({ ...your passed object });
并最终订阅您的子组件:
someRouteParams$.subscribe(someObject => {
console.log(someObject);
});
或者,获取一个像 NGXS、Akita 或 NGRX 这样的状态管理库来为你管理这个状态
推荐阅读
- bash - 如何处理使用 jq 解析 curl 响应时出现的错误
- apache - 将 CQ 5.6.1(jdk 1.7) 迁移到 AEM 6.4(jdk 1.8),使用 Serializer 从 Cassandra 读取会话时无法反序列化字节数组
- node.js - MongoError:游标不存在,被杀死或超时
- tfs - 获取 TFS 中存在 5 个以上错误的用户故事
- soap - 如何将 SOAP WSDL 中的服务、端口和操作映射到 url?
- javascript - Bootstrap 切换侧边栏从外部选项卡指向活动选项卡
- python - os.walk 在 Python 中
- git - 如何git合并其他文件(特定文件夹除外)和特定文件夹中的特定文件
- python-3.x - 在 python pandas 中,如何使用 where 条件使用外连接?
- mongodb - Mongodb 如何停止关闭其中一个实例