我正在使用angular6 cli创建一个项目。并创建一个装饰器以检查每个组件的身份验证。
但是,当我重新加载页面并访问组件时,仅一次调用此装饰器。
例如:我为user page
应用装饰器,步骤将是,从Home Page
我访问User page
,将调用装饰器。然后,我回到Home page
并重新访问User page
,装饰器没有被调用。如果我重新加载页面并重新访问user page
,装饰器将被调用。
该问题的任何解决方案。
我应用了延迟加载模块,在UserModule中定义了UserComponent,然后像这样在AppRouting中加载:
{
path: "user",
loadChildren: "./user/user.module#UserModule"
}
我的装饰器:
export function authorize() {
return function (target: any) {
let userLogged = LocalStorage.userIsLogged();
if (userLogged) {
//Do something
Reflect["defineMetadata"](target.name, null, target);
} else {
throw new Error();
}
}
}
我的组件:
@authorize()
@Component({
templateUrl: './user.component.html'
})
export class UserComponent {
constructor() {}
}
我不知道为什么。请帮助,谢谢。