【问题标题】:Object shows property with data; property shows up blank对象用数据显示属性;属性显示为空白
【发布时间】:2017-09-13 15:35:15
【问题描述】:

我得到了一个相当混乱的结果,不知道发生了什么。我怀疑这是一个严格的 Javascript 问题,但我不是。

我有一个CanActivate 守卫,我正在尝试从路由解析器中检索数据。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
    this.userService.watchCurrentUser().subscribe((currentUser: User) => {
        console.log(route, route.data);
    });
    return Observable.of(true);
}

数据显示如下:

ActivatedRouteSnapshot {url: Array(2), params: Object, queryParams: Object, fragment: null, data: Object…} Object {}

虽然有点难看,但您可以看到数据对象存在于快照中,如果我展开它,它会包含我期望的所有数据。但是,您也可以看到,当我登录route.data 时,该对象是空白的。我不知道为什么,也不知道如何调试。

【问题讨论】:

  • 你有没有尝试扩展这个看似空白的对象?
  • @Thomas 是的,我说它是空白的,因为它实际上是一个空对象。展开后,它只包含原型,就像任何空对象一样。

标签: javascript angular


【解决方案1】:

Data 是您在路由配置中静态定义的对象。比如我在data obj中使用title来动态显示页面标题依赖于路由,每个路由都有自己的数据对象。

const routes: Routes = [
{
  path: 'path',
  component: ContainerComponent,
  canActivate: [AuthGuard],
  data: {title: 'My Chart'}
 },
 ....
]

【讨论】:

  • 正如我提到的,当我记录路由时,数据属性包含我期望的值。当我记录 route.data 时,它作为一个空对象出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2015-05-17
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多