无法将类型分配给providerIn类型

时间:2019-01-09 14:33:50

标签: angular typescript angular7

我正在尝试借助Angular的教程https://angular.io/guide/http

创建服务

我正在使用Angular 7.0.7

该服务将从某个网址获取json数据:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable
export class ProductListService {
  constructor(private http: HttpClient) {
  }

  productListUrl: string = "https://blahblah.com/products";

  getProductList() {
    return this.http.get(this.productListUrl);
  }
}

我在@Injectable()下出现了一个带有该问题标题的波浪线。为什么会发生这种情况,我该如何解决?

我有一个将使用此服务的组件:

 import { ProductListService } from '../services/productList.service';
 @Component({
   selector: 'app-productlist',
   templateUrl: './productlist.component.html',
   styleUrls: ['./productlist.component.css'],
   providers: [ProductListService]
 })

2 个答案:

答案 0 :(得分:4)

您错过了为parenthesis装饰器添加@Injectable()

@Injectable()
export class ProductListService {
   constructor(private http: HttpClient) {
}

答案 1 :(得分:1)

您的@Injectable不正确。添加引用要使用该服务的组件的providedIn属性:

@Injectable({
  providedIn: 'app-productlist',
})
export class ProductListService {
   constructor(private http: HttpClient) {
}

另一种解决方案是只使用@Injectable()这样的装饰器,并在您的app.module.ts文件中将您的服务声明为提供者。