Angular @当@Inject工作时,Injectable不工作
我遇到了一个奇怪的问题 我得到了非常简单的服务:Angular @当@Inject工作时,Injectable不工作,angular,typescript,dependency-injection,Angular,Typescript,Dependency Injection,我遇到了一个奇怪的问题 我得到了非常简单的服务: import { Inject, Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; @Injectable() export class EchoService { constructor(private httpClient:
import { Inject, Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class EchoService {
constructor(private httpClient: HttpClient) {}
public makeCall(): Observable<any> {
return this.httpClient.get<any>('https://jsonplaceholder.typicode.com/posts/1');
}
}
在组件中:
import { Component, Inject, OnInit } from '@angular/core';
import { EchoService } from './services/echo.service';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'my-app',
templateUrl: `app.component.html`,
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
public response: Observable<any>;
constructor(private echoService: EchoService) {}
public ngOnInit(): void {
this.response = this.echoService.makeCall();
}
}
constructor(@Inject(EchoService) private echoService: EchoService) {}
我的tsconfig.json是:
怎么回事?为什么@Injectable不起作用,而@Injectable起作用?请检查您的@NgModule声明,可能您错过了导入列表中的HttpClientModule。如果我理解正确,您应该添加反射元数据库。
同样的情况。当我将项目从Angular 5迁移到7版本时。我的作品: 添加到tsconfig.json-emitDecoratorMetadata:true 完整的tsconfig.json: { 编译器选项:{ baseUrl:./src, 实验者:是的, 是的, sourceMap:true, 模块解决方案:节点, 目标:es2015, rootDir:/src, 类型根:[ 节点\模块/@类型 ], 库:[ es2018, 多姆 ], skipLibCheck:是的, 类型:[] }
}我的@NgModule中有HttpClientModule。正如我写的。。没有@inject,我不能注射任何东西。不仅仅是httpClient。我到处都在找这个。非常感谢。
constructor(@Inject(EchoService) private echoService: EchoService) {}
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "dom", "esnext" ]
}
}