Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular6混合应用程序不加载AngularJS组件_Javascript_Angularjs_Angular_Hybrid_Ng Upgrade - Fatal编程技术网

Javascript Angular6混合应用程序不加载AngularJS组件

Javascript Angular6混合应用程序不加载AngularJS组件,javascript,angularjs,angular,hybrid,ng-upgrade,Javascript,Angularjs,Angular,Hybrid,Ng Upgrade,我的目标是使用Angular6将大型AngularJS 1.7.3版升级为混合应用程序。我完成了准备阶段,我必须将所有控制器/指令转换为AngularJS组件。我已使用命令行创建了一个新的Angular 6项目骨架: ng new hybrid-app 我将AngularJS遗留代码复制粘贴到Angular6应用程序的src/ng1文件夹中 这就是我的app.module.ts从Angular 6引导AngularJS 1.x应用程序的样子: import {BrowserModule}

我的目标是使用Angular6将大型AngularJS 1.7.3版升级为混合应用程序。我完成了准备阶段,我必须将所有控制器/指令转换为AngularJS组件。我已使用命令行创建了一个新的Angular 6项目骨架:

 ng new hybrid-app
我将AngularJS遗留代码复制粘贴到Angular6应用程序的src/ng1文件夹中

这就是我的app.module.ts从Angular 6引导AngularJS 1.x应用程序的样子:

 import {BrowserModule} from '@angular/platform-browser';
 import {NgModule} from '@angular/core';
 import {UpgradeModule} from '@angular/upgrade/static';
 import {AppComponent} from './app.component';

 @NgModule({
   declarations: [
    AppComponent
   ],
 imports: [
  BrowserModule,
  UpgradeModule
 ],
 providers: [],
  // bootstrap: [AppComponent] // No Bootstrap-Component
})
 export class AppModule {
   constructor(private upgrade: UpgradeModule) {
 }

 ngDoBootstrap() {
  this.upgrade.bootstrap(document.body, ['myAngularJsModule'], {strictDi: 
   true});
 }
}
当我做ng服务时,没有错误,我可以看到Angular6应用程序重定向到默认的AngularJS路由,即/login。这是我的AngularJS路由文件:

 angular.module('myAngularJsModule').config(["$locationProvider", function ($locationProvider) {
    $locationProvider.html5Mode(false);
}])
.config(
    ['$stateProvider', '$urlRouterProvider', '$locationProvider',
        function ($stateProvider, $urlRouterProvider) {

            /**
             * Default route.
             */
            $urlRouterProvider.otherwise('/login');

            $stateProvider
                .state('login', {
                    url: '/login',
                    params: {message: null},
                    component: 'loginComponent',
                    template: '<login-component></login-component>'
                });

我可能需要看看这个:


我将删除旧的angular ui路由器,并将其替换为此路由器。

切换到angular hybrid进行路由会导致错误:StaticInjectorError(AppModule)[UpgradeModule->Injector]:StaticInjectorError(Platform:core)[UpgradeModule->Injector]:NullInjectorError:Injector没有提供程序!有人在构建混合Angular应用程序时遇到过此问题吗?嗨@Nizar,你修复了错误吗?我有类似的错误
NullInjectorError:没有注入器的提供程序尝试将AngularJS 1.6升级到AngularJS6@Alisson在我看来,您的某个组件可能在某处注入了依赖项,但实际上您忘记了在app.module.ts中声明它。您让它工作了吗?这看起来像是我看到的一个错误。在我的例子中,虽然我的angular hybrid应用程序运行良好,但如果我在build/service命令中添加--aot选项,就会出现错误。我也面临这个问题,您找到解决方案了吗?
 template: '<h1>Hello World!<h1>'
 Error: StaticInjectorError(AppModule)[UpgradeModule -> Injector]: 
 StaticInjectorError(Platform: core)[UpgradeModule -> Injector]: 
NullInjectorError: No provider for Injector!
at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:1062)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1244)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1141)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1244)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1141)
at resolveNgModuleDep (core.js:8376)
at _createClass (core.js:8423)
at _createProviderInstance (core.js:8393)