angular - Typen kan inte tilldelas till typen providedIn Egenskapen ProvidedIn saknas
Jag försöker skapa en tjänst med hjälp av Angulars handledning https://angular.io/guide/http
Jag använder Angular 7.0.7.
Tjänsten skulle hämta JSON-data från någon URL:
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);
}
}
Jag får en vågig linje under @Injectable() med titeln på denna fråga. Varför händer det, och hur löser jag det?
Jag har en komponent som kommer att använda den här tjänsten:
import { ProductListService } from '../services/productList.service';
@Component({
selector: 'app-productlist',
templateUrl: './productlist.component.html',
styleUrls: ['./productlist.component.css'],
providers: [ProductListService]
})
Svar #1
Du har glömt att lägga till parenthesis för @Injectable() dekoratorn
@Injectable()
export class ProductListService {
constructor(private http: HttpClient) {
}
Svar #2
Ditt @Injectable är inte korrekt. Lägg till providedIn-egenskapen som refererar till din komponent som kommer att använda tjänsten:
@Injectable({
providedIn: 'app-productlist',
})
export class ProductListService {
constructor(private http: HttpClient) {
}
En annan lösning är att bara använda dekoratorn på det sättet: @Injectable(), och att deklarera din tjänst i din app.module.ts-fil, som provider
@Injectable()
export class ProductListService {
constructor(private http: HttpClient) {
}
