警告:Can';t解析UsersPermissionService的所有参数这将成为Angular v5.x中的错误
当我运行ng build-prod时,我收到以下警告警告: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
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,但是它有它的父类和子类。在这种情况下我如何解决?