1

如何手动从 Angular 6 引导这个 angularjs 1 应用程序?

作为起点,我有一个工作的 angularjs 1 应用程序:feAngular1 ui-router Helloworld和一个用 angular-cli 创建的纯 angular 6 应用程序。

第一步是添加必要的依赖项,如 angular、@uirouter/angularjs、@angular/upgrade、@types/angular 到 package.json,并在 angular.cli 中填充脚本部分:

"scripts": [
    "node_modules/angular/angular.min.js",
    "node_modules/@uirouter/angularjs/release/angular-ui-router.min.js",
    "app/app.js"
]

然后我将 angular 1 应用程序放到 /app/script.js 和 /index.html

<body ng-app="helloApp">从 index.html 中删除了,所以修改后的 index.html 看起来像这样:

<!DOCTYPE html>
<html lang="en">

<head>
    <title>AngularJS</title>
</head>

<body>
    <div id="hello-app">
        <div ng-controller="HelloController">
            <a ui-sref="hello" ui-sref-active="active">Hello</a>
            <a ui-sref="about" ui-sref-active="active">About</a>
            <ui-view></ui-view>
        </div>
    </div>
    <app-root></app-root>
</body>

</html>

为了从角度 2 引导角度 1,我将 ngDoBootstrap() 添加到 app.module.ts 并删除了 bootstrap[AppModule] 部分:

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

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        UpgradeModule
    ],
    providers: [],
})
export class AppModule {
    constructor(private upgrade: UpgradeModule) {}
    ngDoBootstrap() {
        this.upgrade.bootstrap(document.getElementById('hello-app'), ['helloApp'], {
            strictDi: true
        });
    }
}

不幸的是,这不起作用。我收到错误消息:

“错误错误:“[$injector:modulerr] http : //errors.angularjs.org/1.7.2/$injector/modulerr?p0=%24%24UpgradeModule&p1=%5B%24injector%3Amodulerr...”

这个概念有什么问题吗?

4

1 回答 1

0

将 angular.min.js 更改为 angular.min 后,可以看到错误消息:

错误 错误:“[$injector:modulerr] 无法实例化模块 $$UpgradeModule 由于:[$injector:modulerr] 无法实例化模块 helloApp 由于:[$injector:strictdi] 函数($stateProvider)未使用显式注释并且不能在严格模式下调用

使用显式注释解决了这个问题:

https://docs.angularjs.org/error/$injector/strictdi

于 2018-07-20T10:46:20.200 回答