gpt4 book ai didi

angular - 此构造函数与 Angular 依赖注入(inject)不兼容,因为它在参数列表索引 0 处的依赖无效

转载 作者:行者123 更新时间:2023-12-04 11:17:23 28 4
gpt4 key购买 nike

在我的 Angular 9 应用程序中,我有一个抽象类:

export abstract class MyAbstractComponent {
constructor(
protected readonly cd: ChangeDetectorRef,
) {
super();
}

// ...
}

和一个扩展它的组件:
@Component({
// ...
})
export class MyConcreteComponent extends MyAbstractComponent {
// ...
}

一切正常,除了测试,我收到以下错误:

Error: This constructor is not compatible with Angular Dependency Injection because its dependency at index 0 of the parameter list is invalid. This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.

Please check that 1) the type for the parameter at index 0 is correct and 2) the correct Angular decorators are defined for this class and its ancestors.

最佳答案

我们在迁移到版本 9 时遇到了同样的问题。最后我们发现我们忘记为一些抽象组件添加装饰器。 从 v9 开始,所有使用 Angular DI 的类都必须有一个 Angular 类级装饰器。

来自 Ivy compatibility examples 的示例:

前:

export class DataService {
constructor(@Inject('CONFIG') public config: DataConfig) {}
}

@Injectable()
export class AppService extends DataService {...}


后:

@Injectable() // <--- THIS
export class DataService {
constructor(@Inject('CONFIG') public config: DataConfig) {}
}

@Injectable()
export class AppService extends DataService {...}

关于angular - 此构造函数与 Angular 依赖注入(inject)不兼容,因为它在参数列表索引 0 处的依赖无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60149052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com