La propriété 'subscribe' n'existe pas sur le type 'void'. Angulaire 2 noyau asp.net
Je reçois le message d'erreur suivant lorsque j'essaie d'utiliser abonnez-vous. J'ai eu le même problème avec .la carte, mais j'ai résolu ce problème de remplacer le fichier suivant https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518/lib/typescriptServices.js
J'ai mis à jour la Machine à 1.8.6 et mise à jour de visual studio 2015 pour mettre à jour 3.
Je n'ai aucune idée de comment résoudre ce problème ou si je fais quelque chose de mal, j'ai aussi ajouté
import 'rxjs/Rx';
l'amorçage et de l'application.classes de composants et toujours la même erreur.
code de service:
import { Injectable } from 'angular2/core';
import {Http, URLSearchParams} from "angular2/http";
import 'rxjs/add/operator/map';
@Injectable()
export class MediaItemService {
constructor(public http: Http) {
this.http = http;
}
//functions
get() {
//return this.mediaItems;
this.http.get("/api/MediaItem").map(response => { response.json() });
}
}
classe, là où le service est utilisé:
import {Component, Inject} from 'angular2/core';
import 'rxjs/Rx';
import {MediaItemComponent} from './media-item.component';
import {CategoryListPipe} from './category-list.pipe';
import {MediaItemService} from './media-item.service';
@Component({
selector: 'media-item-list',
directives: [MediaItemComponent],
pipes: [CategoryListPipe],
providers: [MediaItemService],
templateUrl: 'app/media-item-list.component.html',
styleUrls: ['app/media-item-list.component.css']
})
export class MediaItemListComponent {
constructor(private mediaItemService: MediaItemService) {
//.subscribe(mediaItems => {
// this.mediaItems = mediaItems;
//});
}
ngOnInit() {
this.mediaItems = this.mediaItemService.get().subscribe(mediaItems => {
this.mediaItems = mediaItems;
});
}
onMediaItemDeleted(mediaItem) {
this.mediaItemService.delete(mediaItem);
}
mediaItems;
}
paquet.fichier json:
{
"version": "1.0.0",
"name": "TestFunWithAngi",
"private": true,
"dependencies": {
"angular2": "^2.0.0-beta.17",
"systemjs": "^0.19.31",
"es6-promise": "^3.2.1",
"es6-shim": "^0.35.1",
"reflect-metadata": "^0.1.3",
"rxjs": "^5.0.0-beta.9",
"tsd": "^0.6.5",
"zone.js": "^0.6.12"
},
"devDependencies": {
"typescript": "^1.8.10",
"typings": "^0.8.1",
"grunt": "1.0.1",
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-uglify": "1.0.1",
"grunt-contrib-watch": "1.0.0",
"grunt-ts": "5.5.1"
}
}
source d'informationauteur user5049376 | 2016-06-23
Vous devez vous connecter pour publier un commentaire.
Vous avez oublié de retour dans votre
get()
. Aussi, ne pas encapsuler le corps de la lambda fonctions sans avoir à retourner quelque chose. Un rendement implicite qui se passe si vous venez de le faireresponse => response.json()
. Sinon, vous devez l'écrire comme ceci:response => { return response.json(); }
.Ici est une version améliorée de votre méthode:
Aussi il suffit de laisser le
this.http = http;
dans votre constructeur. Écritpublic
ouprivate
en face de l'argument du constructeur déjà l'ajoute en tant que membre de la classe.Votre get()-Fonction ne renvoie pas Observables -> rien à vous abonner.
Essayez: