2016-08-03 20 views
9

Próbuję użyć $log usługę do kątową 2, zgodnie z tym co czytać trzeba wykonać następujące czynności:wstrzyknąć angularjs do Kątowymi

  1. Utwórz moduł, który zawiera usługę, którą chcesz wprowadzić.
  2. Wywołanie UpgradeAdapter's upgradeNg1Provider method.

Więc zrobiłem następujące

var initInjector = angular.injector(['ng']); 
    var $log = initInjector.get('$log'); 
    angular.module('Services1', []) 
    .service('$log', [$log]); 
    upgradeAdapter.upgradeNg1Provider('$log'); 

Następnie tworzę kątową 2 komponent w postaci następującego

@Component({ selector: "ion-app", template:"<p>Test</p>" }) 
    @Injectable() 
    export class HelloIonicPage { 
     message: string; 
     constructor(@Inject('$log') $log) { 
     this.message = "Hi"; 
     } 
    } 

Ale kiedy uruchomić aplikację daje mi następujący błąd:

ORIGINAL EXCEPTION: No provider for $log!

Próbowałem również bootstrap korzystając upgradeAdapter:

upgradeAdapter.bootstrap(document.documentElement, ['Services1']) 

Ale to nie działa również. Należy pamiętać, że używam jonowych 2 ramy i powyższy kod został napisany wewnątrz

this.platform.ready().then(() => { 
      //The code is going here 
}); 
+0

Wydaje się podobnym pytaniem. Sprawdź to, możesz użyć wiązań lub dostawców http://stackoverflow.com/a/32298993/1403009 – Naveen

+0

@NaveenAechan Ta odpowiedź nie wydaje się być pomocna, ponieważ zakłada, że ​​masz dostęp do obiektu dostawcy Angular 2. UpgradeAdapter.upgradeNg1Provider nic nie zwraca. – sgroves

+0

Po prostu odwołaj się do "Angular", jeśli chodzi o Angular 2+ – brijmcq

Odpowiedz

5

Musisz się zarejestrować jako dostawcy usługi. Oto jak wstrzykiwać angular1 $ stan na kątowej 2 Zastosowanie:

@NgModule({ 
    providers: [ 
    { 
     provide: '$state', 
     useFactory: ($injector: any) => $injector.get('$state'), 
     deps: ['$injector'] 
    } 
    ] 
}) 

a potem w miejscu wstrzyknięcia:

@Injectable() 
export class RestService { 
    constructor(@Inject('$state') $state: any) { 
    $state.go('...'); 
    } 
} 
+0

'injektor $ jest niezdefiniowany' –

+0

działa jak czar! Dzięki! – yarm