警告:Can';t解析UsersPermissionService的所有参数这将成为Angular v5.x中的错误

警告:Can';t解析UsersPermissionService的所有参数这将成为Angular v5.x中的错误,angular,angular5,Angular,Angular5,当我运行ng build-prod时,我收到以下警告 Warning: Can't resolve all parameters for UsersPermissionsService in C:/SourceControl/Test.Client/src/app/shared/users/users-permissions.service.ts: (?, ?, ?). This will become an error in Angular v5.x Warning: Can't resolv

当我运行ng build-prod时,我收到以下警告

Warning: Can't resolve all parameters for UsersPermissionsService in C:/SourceControl/Test.Client/src/app/shared/users/users-permissions.service.ts: (?, ?, ?). This will become an error in Angular v5.x
Warning: Can't resolve all parameters for UsersPermissionsService in C:/SourceControl/Test.Client/src/app/shared/users/users-permissions.service.ts: (?, ?, ?). This will become an error in Angular v5.x
我的代码如下:

import { Injectable } from '@angular/core';

@Injectable()
export class UsersPermissionsService {

    public USERS_CREATE_PERMISSION: string = '';
    public USERS_UPDATE_PERMISSION: string = '';
    public USERS_DELETE_PERMISSION: string = '';

    constructor(public UsersCreatePermission: string,
        public UsersUpdatePermission: string,
        public UsersDeletePermission: string) {
        this.USERS_CREATE_PERMISSION = UsersCreatePermission;
        this.USERS_UPDATE_PERMISSION = UsersUpdatePermission;
        this.USERS_DELETE_PERMISSION = UsersDeletePermission;
    }
}


@Injectable()
export class UserModulePermissionsService extends UserPermissionsService {
    constructor() {
        super("ClientsCreate",
            "ClientsEdit",
            "ClientsDelete");
    }
}

@Component({
    templateUrl: './users-permissions.component.html',    
    providers: [UsersPermissionsService]
})
export class UsersPermissionsComponent {
    constructor(public usersPermissionsService: UsersPermissionsService) {

    }
}
在我的惰性加载模块中,我有:

 providers: [
        { provide: UsersPermissionsService, useClass: UserModulePermissionsService }
    ]
现在angular 5已经发布了,我需要更新,正如消息所说,这个警告将变成一个错误


不明白这里真正的问题是什么。

从基类中删除
@Injectable
装饰器。您应该只在Angular应该直接实例化的类上包含该装饰器(或任何相关的装饰器)(在这样做的同时,还可以使用注入器解析它们的构造函数参数)


因为很明显,在您的例子中,基类不能由angular直接实例化(它有注入器不知道的构造函数参数),所以您应该从中删除decorator。

得到这一点,因为我试图向服务的父级添加一个参数

A
   constructor(logger: loggerService, someData: myData)

B extends A
    constructor (logger: loggerService, new myData())

我的解决方案是找到另一种方法来设置一些数据…

如果有人在构建angular应用程序时遇到此问题,以下步骤对我有效:

1) 请注意运行build命令时出现的错误,例如

2) 现在检查同一组件的构造函数服务注入

3) 现在进入每个服务并确保删除默认导出

4) 现在,您需要在导入此服务的所有位置进行更改。
您需要导入带有大括号的命名导出,如{AlertService},而不是AlertService

您是否尝试从基类中删除
@Injectable
装饰器?我无法删除它,因为用户任务组件正在使用它(编辑了我的初始问题并添加了代码)。我有几个模块使用这个组件。在每个模块提供者中,我使用不同的
UsersPermissionService
实例。我在上面发布了模块A的
UserModulePermissionsService
。对于模块B,我有
ModuleUserModulePermissionsService
等。出于好奇,删除它时会出现什么错误?
无法解析UserSubmissionsService的所有参数:(?,?,?).
除了按照您的建议删除
Injectable
之外,我还从
users permissions.component.html
中删除了
userpermissions服务
,现在它正在工作。在我的例子中,这个类没有@Injectable decorator,但是它有它的父类和子类。在这种情况下我如何解决?