Ui-router angular para obter uma visão condicional

Estou fazendo uma pergunta semelhante a esta pergunta:Exibições da interface do usuário condicional da UI Router?, mas minha situação é um pouco mais complexa e não consigo obter a resposta fornecida para o trabalho.

Basicamente, eu tenho um URL que pode ser renderizado de duas maneiras muito diferentes, dependendo do tipo de entidade para a qual o URL aponta.

Aqui está o que estou tentando atualmente

    $stateProvider
        .state('home', {
            url : '/{id}',
            resolve: {
                entity: function($stateParams, RestService) {
                    return RestService.getEntity($stateParams.id);
                }
            },
            template: 'Home Template <ui-view></ui-view>',
            onEnter: function($state, entity) {
                if (entity.Type == 'first') {
                    $state.transitionTo('home.first');
                } else {
                    $state.transitionTo('home.second');
                }
            }
        })
        .state('home.first', {
            url: '',
            templateUrl: 'first.html',
            controller: 'FirstController'
        })
        .state('home.second', {
            url: '',
            templateUrl: 'second.html',
            controller: 'SecondController'
        });

Configurei uma resolução para buscar a entidade real de um serviço reparador. Tudo parece estar funcionando até que eu chegue à transiçãoTo com base no tipo.

A transição parece funcionar, exceto que a resolução é acionada novamente e a getEntity falha porque o ID é nulo.

Tentei enviar o ID para as chamadas transiçãoPara, mas ele ainda tenta fazer uma segunda resolução, o que significa que a entidade é buscada duas vezes no serviço de resto.

O que parece estar acontecendo é que, no manipulador onEnter, o estado ainda não mudou, portanto, quando a transição acontece, ele pensa que está passando para um estado totalmente novo, e não para um estado filho. Isso é mais evidenciado porque quando removo a entidade. do nome do estado na transição Para, ele acredita que o estado atual é raiz, e não local. Isso também me impede de usar 'go' em vez de transição para.

Alguma ideia?

questionAnswers(4)

yourAnswerToTheQuestion