AngularDart升级至最新版本后获取routeName的替代方法咨询
获取新版AngularDart中路由名称的替代方案
在新版AngularDart里,旧版的Router.currentInstruction这类API已经随着路由系统的重构被废弃了,想要获取路由名称可以试试下面这些方案:
通过ActivatedRoute获取当前路由名称
这是最推荐的方式,因为ActivatedRoute绑定的是当前组件对应的路由信息,在嵌套路由场景下更准确。
首先在组件中注入ActivatedRoute:import 'package:angular_router/angular_router.dart'; class YourComponent { final ActivatedRoute _activatedRoute; YourComponent(this._activatedRoute); }然后直接访问路由配置的
name属性:String get routeName => _activatedRoute.routeConfig?.name ?? '';这里用
?.和空值合并运算符是为了处理路由未完全激活时的空指针问题。监听路由变化实时获取名称
如果需要在路由切换时自动更新路由名称,可以订阅ActivatedRoute的routeConfigChanges流:Stream<String> get routeNameStream => _activatedRoute.routeConfigChanges .map((config) => config?.name ?? '');你可以在组件初始化时订阅这个流,就能实时拿到最新的路由名称了。
通过Router获取当前路由名称
如果你习惯用Router实例来操作,新版中可以通过routerState来访问当前路由状态:import 'package:angular_router/angular_router.dart'; class YourComponent { final Router _router; YourComponent(this._router); String get routeName => _router.routerState.current.routeConfig?.name ?? ''; }不过这种方式拿到的是全局当前路由,在嵌套路由场景下可能不如
ActivatedRoute精准。
内容的提问来源于stack exchange,提问作者Subramanian
相关产品推荐
相关产品推荐

