2016-08-03 43 views
9

Tôi đang cố gắng sử dụng $log dịch vụ vào một góc 2, Theo những gì tôi đọc bạn cần các bước sau:Tiêm angularjs dịch vụ vào góc

  1. Tạo một module có chứa các dịch vụ mà bạn muốn tiêm.
  2. Nâng cấp cuộc gọi UpgradeAdapterNgười cung cấp phương pháp nâng cấpNg1.

Vì vậy, tôi đã làm như sau

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

Sau đó, tôi tạo ra một 2 phần góc cạnh như sau

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

Nhưng khi tôi chạy ứng dụng nó mang lại cho tôi những lỗi sau:

ORIGINAL EXCEPTION: No provider for $log!

Ngoài ra, tôi đã cố gắng bootstrap sử dụng upgradeAdapter:

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

Nhưng điều đó cũng không có tác dụng. Xin lưu ý rằng tôi đang sử dụng Ionic 2 khuôn khổ và các mã trên được viết bên trong

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

Có vẻ như một câu hỏi tương tự. Kiểm tra điều này, bạn có thể muốn sử dụng các ràng buộc hoặc các nhà cung cấp http://stackoverflow.com/a/32298993/1403009 – Naveen

+0

@NaveenAechan Câu trả lời đó dường như không hữu ích, vì nó giả sử bạn có quyền truy cập vào đối tượng nhà cung cấp Angular 2. UpgradeAdapter.upgradeNg1Provider không trả lại bất cứ điều gì. – sgroves

+0

Chỉ cần tham khảo 'Góc' nếu bạn đang đề cập đến Góc 2+ – brijmcq

Trả lời

5

Bạn cần phải đăng ký dịch vụ như nhà cung cấp. Dưới đây là cách tôi tiêm angular1 $ nhà nước để góc 2 ứng dụng:

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

và sau đó tại chỗ tiêm:

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

'$ injector is undefined' –

+0

hoạt động như một nét duyên dáng! Cảm ơn! – yarm

Các vấn đề liên quan