【发布时间】:2017-03-09 16:34:08
【问题描述】:
我目前有一个使用 angular-cli 的混合 Angular 应用程序(2.4.9 和 1.5.0)。目前,在运行我们的应用程序时,我们能够正确引导 1.5 应用程序:
// main.ts
import ...
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
angular.element(document).ready(() => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.body, ['myApp'], {strictDi: true});
});
});
但是,在我们的test.ts 文件中:
// test.ts
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import ...;
declare var __karma__: any;
declare var require: any;
__karma__.loaded = function () {};
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
// I'm assuming that I need to call 'boostrapModule()' somehow here...
platformBrowserDynamicTesting()
);
const context = require.context('./', true, /\.spec\.ts$/);
context.keys().map(context);
__karma__.start();
我不确定如何将我们的 1.5 应用程序引导到测试环境中,我得到的只是 Module 'myApp' is not available!,而我的 Google 技能无法找到示例。
【问题讨论】:
-
删除
declare var __karma__: any;并使用实际的@types/karma包可能会更好。这不会导致您的错误,但您代码中的每个declare const lib: any;都会丢弃通常有用的工具。 -
我必须承认,当我阅读“Angular 1.x/2 Hybrid”时,我什至不敢相信这样的事情是可能的。
标签: angularjs angular ng-upgrade angular2-upgrade