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