Angular Hybrid Error: Trying to get the AngularJS injector before it being set

Discussão em 'Angular' iniciado por Andrei, Novembro 25, 2024.

  1. Andrei

    Andrei Guest

    How to use AngularJS service in Angular 5 component?


    I have AngularJS application and i am trying to make hybrid app but not able to use AngularJS service insight Angular component : getting error


    ERROR Error: Trying to get the AngularJS injector before it being set.
    ​

    my main.ts is

    import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
    import { AppModule } from './app.module';
    platformBrowserDynamic().bootstrapModule(AppModule);


    app.module :

    import { BrowserModule } from '@angular/platform-browser';
    import { NgModule, InjectionToken } from '@angular/core';
    import { FormsModule } from '@angular/forms';

    import { UpgradeModule, downgradeComponent } from '@angular/upgrade/static';
    import { AppComponent } from './app.component';
    import { SignInComponent } from "./modules/login/components/sign-in/sign-in.component";
    import { authServiceProvider } from './shared/angularJS-upgraded-providers';



    @NgModule({
    declarations: [
    AppComponent,
    SignInComponent
    ],
    imports: [
    BrowserModule,
    UpgradeModule,
    FormsModule
    ],
    entryComponents: [
    SignInComponent
    ],
    providers: [authServiceProvider],
    bootstrap: [SignInComponent]
    })

    export class AppModule {
    ngDoBootstrap() {}
    }


    angularJS-upgraded-providers.ts :

    import { InjectionToken } from "@angular/core";
    export const AuthService = new InjectionToken<any>('authService');

    export function authServiceFactory(i: any) {
    return i.get('authService');
    }

    export const authServiceProvider = {
    provide: AuthService,
    useFactory: authServiceFactory,
    deps: ['$injector']
    };


    and sign-in.component.ts :

    import { Component, Inject } from '@angular/core';
    import {AuthService} from "../../../../shared/angularJS-upgraded-providers";

    @Component({
    selector: 'sign-in',
    template: require('./sign-in.component.html')
    })

    export class SignInComponent {
    constructor(
    @Inject(AuthService) private authService: any) {
    }
    }


    When I remove SignInComponent constructor part code compiles well but with @Inject(AuthService) private authService: any) { } part I am getting an error :


    Trying to get the AngularJS injector before it being set.
    ​

    Please give me some suggesting how can I implement angularJS service insight Angular component. Thanks

    P.S. my package.json :

    {
    "name": "test",
    "version": "1.0.0",
    "private": true,
    "scripts": {
    "start": "webpack-dev-server --port=4200 --open chrome"
    },
    "dependencies": {
    "@angular/common": "^5.2.11",
    "@angular/compiler": "^5.2.11",
    "@angular/core": "^5.2.11",
    "@angular/forms": "^5.2.11",
    "@angular/http": "^5.2.11",
    "@angular/platform-browser": "^5.2.11",
    "@angular/platform-browser-dynamic": "^5.2.11",
    "@angular/router": "^5.2.11",
    "@angular/upgrade": "^5.2.11",
    "core-js": "^2.5.7",
    "reflect-metadata": "^0.1.12",
    "rxjs": "^5.5.11",
    "zone.js": "^0.8.26"
    },
    "devDependencies": {
    "@types/jquery": "^3.3.6",
    "@types/node": "^8.10.23",
    "awesome-typescript-loader": "^5.2.0",
    "css-loader": "^1.0.0",
    "html-loader": "^0.5.5",
    "html-webpack-plugin": "^3.2.0",
    "raw-loader": "^0.5.1",
    "style-loader": "^0.22.1",
    "ts-loader": "3.2.0",
    "typescript": "^2.9.2",
    "webpack": "^4.16.5",
    "webpack-cli": "^3.1.0",
    "webpack-dev-server": "^3.1.5"
    }
    }


    And AngularJS version : 1.6.8

    Continue reading...

Compartilhe esta Página