在重定向到页面之前我正在使用以下服务进行简单检查
import { Injectable,OnInit } from '@angular/core';
export class UserCheck {
private userState:boolean = false;
get isValid(): boolean{
return this.userState;
}
set isValid(usrstate){
this.userState = usrstate;
}
}
用户检查是在另一个服务中将isValid
设置为true或false的服务;
假设另一个服务已将isValid
设置为true,我使用提供程序来生成UserCheck
usercheck服务的sigle实例。但是当守卫实际上被执行时,不考虑设置为真的值。
import { CanActivate,ActivatedRouteSnapshot,RouterStateSnapshot } from '@angular/router';
import { UserCheck } from './UserCheck' ;
import { Observable } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
@Injectable()
export class UserDetailGuard implements CanActivate{
constructor (private usrstate:UserCheck){
console.log ("guard in action " + this.usrstate.isValid) }
canActivate(route:ActivatedRouteSnapshot, state:RouterStateSnapshot) : Observable<boolean> | boolean{
console.log ("guard executed.. " + this.usrstate.isValid)
return this.usrstate.isValid;
}
}
只要在构造函数代码中的控制台日志this.usrstate.isValid
中可以看到guard in action true
的页面加载值为true(参见图像),但是当我实际导航到页面时,它不会考虑{的值{1}}并指定默认值false。
app.module.js 删除了不必要的代码..
this.usrstate.isValid