Angular 路由 - 等待上一个解析

Angular Routing - Wait for previous resolve

我有一条 angular 路线如下:

    $routeProvider.when('/admin/:one/:two/:three?', {
        templateUrl: '/app/partials/admin.html',
        controller: 'AdminCtrl',
        resolve: {
            login: function(LoginService) {
                return LoginService.login();
            },
            admin: function($route, LoginService) {
                return LoginService.admin($route.current.params.one, $route.current.params.two, $route.current.params.three);
            }
        }
    });

问题是第二个解析,admin,取决于第一个解析完成(LoginService.admin() 调用 ensureAuthenticated,这需要 LoginService.login() 完成,否则它就会失败)。

有没有办法告诉管理员 resolve 等待登录 resolve?

感谢您提供的任何 help/advice。

如果您将第一个解析结果(在您的情况下为login)注入到第二个解析中,那么该解析将被延迟,直到该值被加载。如果没有加载或者有错误,则不会触发:

$stateProvider.state('/admin/:one/:two/:three?', {
        templateUrl: '/app/partials/admin.html',
        controller: 'AdminCtrl',
        resolve: {
            login: function(LoginService) {
                return LoginService.login();
            },
            admin: function($route, LoginService, login) { //here we injected login
                return LoginService.admin($route.current.params.one, $route.current.params.two, $route.current.params.three);
            }
        }
    });

编辑:更改了答案,目前我只知道它可以与 $stateProvider 一起使用。