Angular 如何在初始化dom和数据之前重定向到主页?
我有3页,第2页将数据提供给第3页。它很好用。问题是当用户刷新第三页时,我想浏览主页。因为第三页没有可用的数据 我试着这样: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
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={}代码>