得到一个;Can';t解析所有参数“;设置混合AngularJS/Angular应用程序时出错

得到一个;Can';t解析所有参数“;设置混合AngularJS/Angular应用程序时出错,angular,angular2-upgrade,Angular,Angular2 Upgrade,我想升级我的传统Angular JS应用程序,我一直在按照Angular.io上的文档设置混合应用程序 现在,我在app.ts中的引导过程如下所示: import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from "./app.module"; platformBrowserDynamic().bootstrapModule(AppModule); imp

我想升级我的传统Angular JS应用程序,我一直在按照Angular.io上的文档设置混合应用程序

现在,我在app.ts中的引导过程如下所示:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from "./app.module";
platformBrowserDynamic().bootstrapModule(AppModule);
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';

@NgModule({
  imports: [
  BrowserModule,
  UpgradeModule
]})
export class AppModule {
  constructor(private upgrade: UpgradeModule) { }
  ngDoBootstrap() {
    this.upgrade.bootstrap(document.body, ['myApp'], { strictDi: true });
  }
}
我的新app.module.ts看起来像:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from "./app.module";
platformBrowserDynamic().bootstrapModule(AppModule);
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';

@NgModule({
  imports: [
  BrowserModule,
  UpgradeModule
]})
export class AppModule {
  constructor(private upgrade: UpgradeModule) { }
  ngDoBootstrap() {
    this.upgrade.bootstrap(document.body, ['myApp'], { strictDi: true });
  }
}
但是,当我运行应用程序时,会出现以下错误:

compiler.es5.js:1503 Uncaught Error: Can't resolve all parameters for AppModule: (?).
at syntaxError (compiler.es5.js:1503)
at CompileMetadataResolver._getDependenciesMetadata (compiler.es5.js:14780)
at CompileMetadataResolver._getTypeMetadata (compiler.es5.js:14648)
at CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:14489)
at JitCompiler._loadModules (compiler.es5.js:25561)
at JitCompiler._compileModuleAndComponents (compiler.es5.js:25520)
at JitCompiler.compileModuleAsync (compiler.es5.js:25482)
at PlatformRef_._bootstrapModuleWithZone (core.es5.js:4786)
at PlatformRef_.bootstrapModule (core.es5.js:4772)
at Object.map../af (app.ts:487)
在我看来,Angular无法找到UpgradeModule来解析AppModule中的依赖项

我的问题是: 为了解决这个问题,我是否在引导过程中遗漏了什么


(注意:这可能相关,也可能无关,但我正在使用webpack作为我的模块加载器。)

我最终实现了这一点,并创建了一个示例GitHub存储库,展示了使用webpack捆绑混合应用程序的基本解决方案:


我刚刚遇到了同样的问题,经过长时间的尝试(并查看您的回购协议),我认为这是因为我的emitDecoratorMetadata没有在Tconfig中设置

接受的答案对我不起作用,因为我已经设置好了。我个人不得不将这个映射添加到我的网页别名中

    {
      resolve: {
        alias: {
          "@angular/upgrade/static": "@angular/upgrade/bundles/upgrade-static.umd.js"
        }
      }
    }

对我来说,这个错误是由angular不支持typescript v3引起的。 角度使用的装饰器在typescript中仍然是实验性的,而且似乎随着版本的变化而改变

此外,官方指南未提及两个必要的方案: 反映元数据,zone.js 但以下教程提到了这一点:

你让它工作了,但是你知道问题出在哪里吗?在我的例子中,是Tconfig出错了。我接受了下面亚当的答案。在谷歌搜索的最后一轮,我几乎自杀了,我找到了你的答案。你救了我的命。非常感谢。