Angular4路由守卫异步操作

守卫可以用同步的方式返回一个布尔值。但在很多情况下,守卫无法用同步的方式给出答案。 守卫可能会向用户问一个问题、把更改保存到服务器,或者获取新数据,而这些都是异步操作。因此,路由的守卫可以返回一个Observable或Promise,并且路由器会等待这个可观察对象被解析为true或false。

canActivate(): Promise {
        return this.http.post('url', null).toPromise().then(
            res => {
                if (res) {
                    return true;
                } else {
                    return false;
                }
            }
        );
    }

你可能感兴趣的:(Angular4路由守卫异步操作)