Angular 如何在初始化dom和数据之前重定向到主页?

Angular 如何在初始化dom和数据之前重定向到主页?,angular,angular5,Angular,Angular5,我有3页,第2页将数据提供给第3页。它很好用。问题是当用户刷新第三页时,我想浏览主页。因为第三页没有可用的数据 我试着这样: constructor(private store: StorageService, private sharedData: SharedDatasService, private location:Location, private route:Router) { console.log('this.sharedDa

我有3页,第2页将数据提供给第3页。它很好用。问题是当用户刷新第三页时,我想浏览主页。因为第三页没有可用的数据

我试着这样:

constructor(private store: StorageService, 
      private sharedData: SharedDatasService, 
      private location:Location,
      private route:Router) {

      console.log('this.sharedData.validationDatas', this.sharedData.validationDatas );

      if(Object.keys(this.sharedData.validationDatas).length === 0 ) { //there is not data.. go to home.
          this.route.navigate(['']);
          return;
      }

    }
但是我仍然从
DOM
compile中得到了错误。而且我的网页根本没有重定向到主页

如何处理

我得到的错误是:

TypeError: Cannot read property 'book.label.title.packageSizes' of undefined

我改变了我的HTML标签的条件,它现在工作良好

以下是最新消息:

它是:

{{getLabel('book.label.title.packageSizes')}}
现在是:

{{getLabel('book?.label.title.packageSizes')}}

您可以使用路线守卫来实现这一点

在您的路线配置中

const routes: Routes = [
{ path: 'secondPage', component: SecondPage},
  {
    path: 'thridpage',
    component: ThridPage,
    canActivate: [DataCheckRouteGuard],
  }
];
DataCheckRouteGuard

import { CanActivate } from '@angular/router';
import { Injectable } from '@angular/core';
import { sharedData} from './SharedDatasService';

@Injectable()
export class DataCheckRouteGuard implements CanActivate {

  constructor(private sharedData: SharedDatasService) {}

  canActivate() {
  if(this.sharedData.validationDatas!==undefined) 
   {
     return true;
   } else 
   {
   // No data so navigate to second page
    this.router.navigate(['/secondPage'] 

    return false
   }
  }
}

您从哪个组件获得此错误<代码>类型错误:无法仅从同一页读取属性“book.label.title.packageSizes”,我没有阅读
DOM
,只是进入页面,根据条件我想重定向this.sharedData.validationDatas是数组吗?不,这是一个对象,我声明如下:
validationDatas:any={}