Saya mendapatkan
ketik 'dapat diamati bukan generik'
Meskipun mengimpor file. Saya mencoba operasi CRUD di sudut 7 dan membuat dua komponen yang menambah dan daftar karyawan, dan fungsi saya untuk membuat dan mendapatkan daftar karyawan ditulis dalam "policy.service.ts", di mana saya mendapatkan
ketik 'Dapat diamati' bukan generik
Saya tidak mengerti kesalahan saya, Tolong bantu untuk menyelesaikan ini
Ini adalah package.json saya
{
"name": "crudop",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "~7.2.0",
"@angular/common": "~7.2.0",
"@angular/compiler": "~7.2.0",
"@angular/core": "~7.2.0",
"@angular/forms": "~7.2.0",
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
"angular-in-memory-web-api": "^0.8.0",
"bootstrap": "^4.3.1",
"core-js": "^2.5.4",
"rxjs": "~6.3.3",
"rxjs-compat": "^6.5.2",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.13.0",
"@angular/cli": "~7.3.9",
"@angular/compiler-cli": "~7.2.0",
"@angular/language-service": "~7.2.0",
"@types/node": "~8.9.4",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"codelyzer": "~4.5.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.2.2"
}
}
Kebijakan.layanan.ts
import {
Injectable
} from '@angular/core';
import {
HttpClient
} from '@angular/common/http';
import {
HttpHeaders
} from '@angular/common/http';
import {
IEmployee
} from './Iempolyee';
import {
Observable
} from 'rxjs/Observable';
@Injectable({
providedIn: 'root'
})
export class PolicyService {
constructor(private http: HttpClient) {}
private url = 'api/employees';
getEmployees(): Observable < IEmployee[] > {
return this.http.get < IEmployee[] > (this.url)
}
createUseremployee(user: IEmployee): Observable < IEmployee > {
const httpOptions = {
headers: new HttpHeaders({
'Content-
Type ':'
application / json '})}
return this.http.post < IEmployee > (this.url, user, httpOptions);
}
}
Di sini saya mendapatkan masalah untuk fungsi getEmployee
dan createUseremployee
yang tipenya dapat diamati tidak umum.
Saya berpikir jika saya perlu menginstal ulang semua atau trik apa pun dapat berhasil
2 jawaban
Terima kasih Atas bantuannya, tetapi akhirnya saya telah memulai kembali dari awal seperti folder yang dibuat dan menginstal semuanya, ini aneh tetapi setelah itu semuanya mulai berfungsi dan masalah yang sama tidak terjadi.
Terima kasih lagi
Anda perlu menambahkan {} untuk Observable dan hanya mengimpor dari rxjs
import { Observable } from 'rxjs';
Ini bekerja untukku
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { HttpHeaders} from '@angular/common/http';
import { Observable } from 'rxjs';
export interface IEmployee {
id:number
}
@Injectable({
providedIn: 'root'
})
export class PolicyService {
constructor(private http: HttpClient) { }
private url = 'api/employees';
getEmployees(): Observable<IEmployee[]> {
return this.http.get<IEmployee[]>(this.url)
}
createUseremployee(user: IEmployee): Observable<IEmployee> {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type ': 'application / json '
})
}
return this.http.post<IEmployee>(this.url, user, httpOptions);
}