将Angular组件降级为AngularJS时出现意外的提供程序

时间:2018-01-11 22:29:37

标签: angular angular5

我成功地引导了我的混合应用程序,但是一旦我尝试在AngularJS模板中使用降级的Angular组件指令,我就会收到此错误:

Error: StaticInjectorError[{providers:[[object Object]], parent:[object Object], name:"DowngradeComponentAdapter"}]: Unexpected provider
    at staticError (core.js:1360)
    at recursivelyProcessProviders (core.js:1209)
    at new StaticInjector (core.js:1079)
    at Function.webpackJsonp../node_modules/@angular/core/esm5/core.js.Injector.create (core.js:1051)
    at DowngradeComponentAdapter.webpackJsonp../node_modules/@angular/upgrade/esm5/static.js.DowngradeComponentAdapter.createComponent (static.js:230)
    at doDowngrade (static.js:528)
    at Object.link (static.js:554)
    at angular.js:1383
    at invokeLinkFn (angular.js:10610)
    at nodeLinkFn (angular.js:9999) "<test-comp>"

我的AngularJS主机组件都是非常简单的静态组件。不能谷歌任何类似的东西。请帮忙。

3 个答案:

答案 0 :(得分:2)

问题显然是我安装了更新版本的@ angular / upgrade(5.2)并且它与我系统上的其他角度包(5.1)不兼容。

答案 1 :(得分:1)

如果我正确理解了您的问题,那么您正在尝试使用AngularJS代码中的Angular组件。鉴于这是正确的,希望以下信息应该有所帮助:

  1. 生成的降级组件是一个指令,需要在AngularJS模块中注册。

    angular.module('yourApp', [])
           .directive(
           'yourComponent',
           downgradeComponent({ component: YourComponent }) as 
           angular.IDirectiveFactory);
    
  2. 因为这是一个Angular组件,所以需要将它添加到AppModule声明中。
  3. 由于AngularJS模块正在使用此组件,如果它是一个入口点,请将其添加到NgModule的entryComponents。
  4. 我猜你错过了在某处注册组件。以供参考 -  https://angular.io/guide/upgrade#using-angular-components-from-angularjs-code了解更多信息

答案 2 :(得分:0)

尝试在app.module.ts

中导入HttpClientModule
import { HttpClientModule } from '@angular/common/http';

@NgModule({
    imports: [
     HttpClientModule
    ]
})