在 NavigationStart 的时候读 cookie
下面这样是可以的
import { DOCUMENT } from '@angular/common';
export class AppComponent {
constructor(
private router: Router,
@Inject(DOCUMENT) private document: any) {
router.events.subscribe(event => {
if (event instanceof NavigationStart) {
this.onNavigationStart(event);
}
});
}
async onNavigationStart(event: NavigationStart) {
if (this.document.cookie) {
console.log(this.document.cookie.indexOf(`${localcommon.Utils.CookieTokenKey}=`));
}
}
}
但是如果没有判断,就会报错 TypeError: Cannot read property 'indexOf' of undefined
async onNavigationStart(event: NavigationStart) {
console.log(this.document.cookie.indexOf(`${localcommon.Utils.CookieTokenKey}=`));
}
请教一下这是什么原因呢?
1
HuJian201 2017-11-06 11:35:57 +08:00
this.document.cookie 没有值的时候是 null 吧,当然没有 indexOf
|
4
jakes 2017-11-06 11:44:04 +08:00 via iPhone
因为不为空才进入分支啊。。。
|
6
weiceshi OP @HuJian201
嗯,可能是我主楼没有写明白 if (this.document.cookie) { console.log(this.document.cookie.indexOf(`${localcommon.Utils.CookieTokenKey}=`)); } 这样写的话,控制台是可以打印出 cookie 内容的,意思就是判断结果不为空 但是如果不用 if 判断,就报错 console.log(this.document.cookie.indexOf(`${localcommon.Utils.CookieTokenKey}=`)); |
8
HuJian201 2017-11-06 11:58:36 +08:00
@weiceshi console.log(typeof this.document.cookie);不加 if 打印出类型看看就知道了。
|
9
nannanziyu 2017-11-06 12:02:55 +08:00 via Android
@HuJian201
string |
10
HuJian201 2017-11-06 12:38:58 +08:00
@nannanziyu 要不放一个在线 demo 看看?
|
11
weiceshi OP |