【问题标题】:Angular - Uncaught Error: Can't resolve all parameters for HomeComponent: (?, ?, ?, ?)Angular - 未捕获的错误:无法解析 HomeComponent 的所有参数:(?,?,?,?)
【发布时间】:2018-11-17 01:36:05
【问题描述】:

运行 Angular 项目时出现错误

未捕获的错误:无法解析 HomeComponent 的所有参数:(?, ?, ?, ?)。

HomeComponent 调用了四个服务。所有服务均由Injectable 提供。当从构造函数中删除所有服务时运行正常,但添加这些服务会导致问题。

HomeComponent.ts

import { Component, OnInit } from '@angular/core';
import { PashminaModel } from '../../model/pashmina.model';
import { HomeService } from '../../services/home-service/home-service';
import { Category } from "../../enum/Enum";
import { FooterService } from "../../services/footer/footer.service";
import { NavbarService } from "../../services/navbar/navbar.service";
import { DataService } from '../../services/data-service/data.service';

@Component({
    selector: 'app-home',
    templateUrl: './home.component.html',
    styleUrls: ['./home.component.scss']
})
constructor(
        private homeService: HomeService,
        private navService: NavbarService,
        private footerService: FooterService,
        private data: DataService
    ) {
}

------
-------

这就是我在app.module.ts 中实现提供程序部分的方式

providers: [
        AuthorizationComponent,
        NavbarService,
        FooterService,
        LoginServiceEndpoint,
        LoginService,
        PashminaServiceEndpoint,
        PashminaService,
        ImageServiceEndpoint,
        ImageService,
        DescriptionServiceEndpoint,
        DescriptionService,
        ColorServiceEndpoint,
        ColorService,
        HomeService,
        HomeServiceEndpoint,
        AccountService,
        AccountServiceEndpoint,
        OrderServiceEndpoint,
        OrderService,
        DataService
    ],

之前可以正常工作但是突然出现这个错误。

【问题讨论】:

  • 你在 ctor 中注入的所有对象,在 app.module 的 providers 部分吗?
  • @Eris- 在提供者部分似乎很好。你能告诉我是什么原因造成的吗
  • 您可以粘贴提供者部分吗?
  • @Eris - 我已经粘贴了一个供应商部分,请看一下
  • 您在服务中使用服务吗?会不会是您的一项服务缺少 @Injectable() 装饰器?

标签: angular typescript


【解决方案1】:

pollyfills.ts 中,您应该已经注释了这两行:

import 'core-js/es6/reflect';
import 'core-js/es7/reflect';

取消注释。它应该可以完美运行。

【讨论】:

    【解决方案2】:

    您已在提供程序中添加了 AuthorizationComponent,从提供程序中删除所有组件并将它们添加到 declarations

    providers: [
            AuthorizationComponent,  //remove from here and add under declarations
            NavbarService,
            FooterService,
            LoginServiceEndpoint,
            LoginService,
            PashminaServiceEndpoint,
            PashminaService,
            ImageServiceEndpoint,
            ImageService,
            DescriptionServiceEndpoint,
            DescriptionService,
            ColorServiceEndpoint,
            ColorService,
            HomeService,
            HomeServiceEndpoint,
            AccountService,
            AccountServiceEndpoint,
            OrderServiceEndpoint,
            OrderService,
            DataService
     ]
    

    【讨论】:

    • 鹰眼。加一。
    • 我已将AuthorizationComponent 设为Injectable
    • 它在AuthorizationComponent 出现在provider 部分之前就已经工作了
    • 不应“提供”组件。 sajeetharan 帖子的反对票是不合适的。
    • @Stavm - AuthorizationComponent 不是我作为@Injectable 制作的组件。对不起,名字不正确,我没有对@Sajeetharan 的回答投反对票
    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2018-12-18
    • 2018-09-21
    • 2023-03-16
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多