2016-11-23 4 views
8

Error: Permission denied to access property "rejection"Fehler: Zugriff verweigert Eigenschaft für den Zugriff auf „Ablehnung“

Wenn ich Http verwenden Service-Injektion es Fehler werfen

import { Injectable }  from '@angular/core'; 
import { Http, Response } from '@angular/http'; 


@Injectable() 
export class ToDoService{ 
    constructor (http: Http) {} 

    getTODOS():any{  
     return ""; 
     // return this.http 
     // .get('https://jsonplaceholder.typicode.com/posts') 
     // .map(res => res.json().data); 
    } 
} 
+0

http://plnkr.co/edit/LRc4VLOzhJjql03kguX8?p=options&open=app%2Fapp.component.ts –

Antwort

0

Sie benötigen die http Variable privat oder öffentlich zu erklären, Zugang zu ihm zu haben, Sonst wird es nur im Konstruktor sichtbar sein.

constructor (private http: Http) {} 
+0

ich bekomme immer noch diesen Fehler. Bitte überprüfen plunkr http://plnkr.co/edit/LRc4VLOzhJjql03kguX8?p=preview&open=app%2Fapp.component.ts –

0

möglicherweise aufgrund von Vorlagenreferenzvariablen, die falsch geschrieben sind.

<input id="user_name" #usernameUpdateRef="ngModel" name="user_name" class="form-control" type="text" required [(ngModel)]="testimonial.user_name" 
            /> 
    <div *ngIf="usernameUpdateRef.errors && (usernameUpdateRef.dirty || usernameaRef.touched)" class="alert alert-danger"> 
    <div [hidden]="!usernameUpdateRef.errors.required">username is required</div> 
    </div> 

usernameaRef falsch geschrieben ist so Fehler werfen

+0

bearbeiten Sie Ihre Frage, Code fehlt –

0

In meinem Fall hatte ich HttpModule

von app.module.ts zu importieren:

import { NgModule } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { AppComponent } from './app.component'; 
import { HttpModule } from '@angular/http'; 
@NgModule({ 
    declarations: [AppComponent], 
    imports: [BrowserModule, HttpModule], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 
+0

Ich habe bereits hinzugefügt, dass –

0

Sie Griff Fehler so sein muss .

Bemühter

Promise.resolve("code to resolve Promise") 
    .then("code to execute on callBack") 
    .catch(reason => { console.log(reason) }) 

auf beobachtbaren (dass es Ihrem Fall)

var subscription = source.subscribe(
    data => console.log(data), 
    err => console.log(err) 
); 

VERSUCHEN SIE DIESE

getTODOS():any{  
    return this.http.get('https://jsonplaceholder.typicode.com/posts') 
     .map(res => res.json().data); 
     .catch(this.handleError); 
    } 
public handleError(error: Response) { 
    console.error(error); 
    return Observable.throw(error.json().error || 'Server error'); 
    } 
0

Ich sah erwähnt, dass das Hinzufügen

import {Observable} from 'rxjs/Observable'; 

geholfen.

+0

können Sie dies als Arbeitsdemo machen? http://plinkr.co/edit/LRc4VLOzhJjql03kguX8?p=options&open=app%2Fapp.component.ts –

+0

Bitte starten Sie den Plunker von einer funktionierenden Angular2 TS-Vorlage. Benutze einfach die '[New | V] 'im Plunker-Editor. –

6

Ich habe die gleiche Ausnahme in Firefox. Bitte versuchen Sie einen anderen Browser, um das Debug zu tun.

In meinem Fall zeigt FireBug nur die Ablehnung "Fehler: Zugriff verweigert Eigenschaft" Ablehnung "" und keine weiteren Informationen.

Aber in Chrome, es zeigt mehr, wie:

Error: Uncaught (in promise): Error: (SystemJS) Unexpected token < 
SyntaxError: Unexpected token < 
    at Object.eval (http://localhost/UI/app/service/order/order.service.js:14:14) 
    at eval (http://localhost/UI/app/service/order/order.service.js:57:4) 
    at eval (http://localhost/UI/app/service/order/order.service.js:58:3) 
Evaluating http://localhost/UI/node_modules/rxjs 
Evaluating http://localhost/UI/app/service/order/order.service.js 
Evaluating http://localhost/UI/app/component/order/order.module.js 
Error loading http://localhost/UI/app/component/order/order.module.js 

Dann Basis auf diese Ausnahme Spur, ich meine Fehler zu fangen. Hier die Ursache meines Fehlers als Referenz anhängen.

In einigen Beispielen von Online-Dokumenten importiert es Observable mit "import {Observable} von 'rxjs';"

Aber es würde vorherige Ausnahme in meinem Projekt verursachen. Ändern Sie es in "{Observable} importieren von 'rxjs/Observable';", dann ist es in Ordnung.

+0

können Sie dies in Plunker arbeiten lassen? –

1

Versuchen Sie, den Operator map aus dem Paket rxjs zu importieren. Es hat mein Problem gelöst.

import 'rxjs/add/operator/map'; 

Wenn Sie do und catch Methoden verwenden, sollten Sie zwei weitere Importe haben:

import 'rxjs/add/operator/do'; 
import 'rxjs/add/operator/catch'; 

Hier ist der Code für Ihre ToDo-Service:

import {Injectable}  from '@angular/core'; 
import {Http, Response} from '@angular/http'; 
import {Observable} from "rxjs/Observable"; 

import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/do'; 
import 'rxjs/add/operator/catch'; 

@Injectable() 
export class ToDoService { 
    constructor(private _http: Http) { 
    } 

    getToDos(): Observable<any> { 
    return this._http.get("https://jsonplaceholder.typicode.com/posts") 
     .map((response: Response) => response.json()); 
    } 
} 

Siehe editierten Code auf Plunker

+0

können Sie dies zu einem ausführbaren Plnker machen http://plnkr.co/edit/LRc4VLOzhJjql03kguX8?p=preview&open=app%2Fapp.component.ts –

+0

@ParthTrivedi Ich habe es bearbeitet. Es funktioniert auf meiner lokalen Umgebung. Aus irgendeinem Grund funktioniert die Abhängigkeitsinjektion auf dieser Website nicht online. – Poulad

+0

http://pnnr.co/edit/gQeTZ1oUTXk8s600zPpC?open=app%2Fapp.component.ts&p=preview – Poulad

-2

Ich hatte eine ähnliche i ssue und erreichte hier eine Lösung. Am Ende stellte sich heraus, dass ich "http: //" von der URL verpasst hatte.

Verwandte Themen