在 NavigationStart 的时候读 cookie
下面这样是可以的
import { DOCUMENT } from '@angular/common'; export class AppComponent { constructor( private router: Router, @Injec(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 |