gpt4 book ai didi

typescript - Angular2 没有服务错误的提供者

转载 作者:太空狗 更新时间:2023-10-29 16:53:49 26 4
gpt4 key购买 nike

来自 Angular2 access global service without including it in every constructor我抓取了代码并将其稍微修改为:

@Injectable()
export class ApiService {
constructor(public http: Http) {}

get(url: string) {
return http.get(url);
}

}

@Injectable()
export abstract class BaseService {
constructor(protected serv: ApiService) {}
}

@Injectable()
export class MediaService extends BaseService {

// Why do we need this?
constructor(s: ApiService) {
super(s)
}

makeCall() {
this.serv.get("http://www.example.com/get_data")
}

}

但是,当我尝试运行这段代码时,控制台出现错误:

NoProviderError {message: "No provider for ApiService! (App -> MediaService -> ApiService)", stack: "Error: DI Exception↵

我用 https://plnkr.co/edit/We2k9PDsYMVQWguMhhGl 的代码创建了一个 Plunkr

有谁知道导致这个错误的原因吗?

最佳答案

您还需要在 providers 属性中定义 ApiService

@Component({
selector: 'my-app',
providers: [MediaService, ApiService], // <-----
template: `
<div>
<h2>Hello {{name}}</h2>
</div>
`,
directives: []
})
export class App {
constructor(mediaService: MediaService) {
this.name = 'Angular2'

console.log('start');

mediaService.makeCall();
}
}

这是因为喷油器依赖组件。如果您想了解有关如何将服务注入(inject)服务的更多详细信息,可以查看以下问题:

关于typescript - Angular2 没有服务错误的提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36063823/

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