Accessing root Angular 2 injector instance globally

前端 未结 3 679
眼角桃花
眼角桃花 2020-12-13 22:13

How to access an instance of root Angular 2 injector globally (say, from browser console).

In Angular 1 it was angular.element(document).injector().

3条回答
  •  不思量自难忘°
    2020-12-13 22:33

    You must set it into a service after bootstrapping the application:

    export var applicationInjector: Injector;
    
    bootstrap([AppComponent]).then((componentRef: ComponentRef) => {
      applicationInjector = componentRef.injector;
    });
    

    Then you can import it into other parts of your application:

    import {applicationInjector} from './bootstrap';
    

    See this question for more details:

    • Good way to secure multiple Angular 2 components

    Edit

    You can inject the ApplicationRef into components and have access to the root injector through it:

    @Component({
      (...)
    })
    export class SomeComponent {
      constructor(private app:ApplicationRef) {
        var rootInjector = app.injector;
      }
    }
    

    You need to leverage dependency injection to get it.

提交回复
热议问题