2016-11-23 6 views
8

Error: Permission denied to access property "rejection"Ошибка: Доступ запрещен доступ к собственности «отказ»

Когда я использую Http служба впрыска она бросает ошибку

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 –

ответ

0

Вы должны объявить http переменную частной или государственной, чтобы иметь доступ к нему, иначе он будет просто виден в конструкторе.

constructor (private http: Http) {} 
+0

Я все еще получаю эту ошибку. Пожалуйста, проверьте plunkr http://plnkr.co/edit/LRc4VLOzhJjql03kguX8?p=preview&open=app%2Fapp.component.ts –

0

это может быть из-за ссылочных переменных шаблона, которые написаны с ошибкой.

<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 Ошибочное так бросает ошибку

+0

отредактируйте ваш вопрос, код не указан –

0

В моем случае мне пришлось импортировать HttpModule

из app.module.ts:

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

Я уже добавил, что –

0

Вы должны быть ошибка ручки, как это ,

На Promise

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

На Наблюдаемые (что это ваш случай)

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

TRY ЭТУ

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

Я видел в нем упоминается, что добавление

import {Observable} from 'rxjs/Observable'; 

помог.

+0

вы можете сделать это рабочим демо? http://plnkr.co/edit/LRc4VLOzhJjql03kguX8?p=options&open=app%2Fapp.component.ts –

+0

Пожалуйста, запустите Plunker из рабочего шаблона TS Angular2. Просто используйте '[New | V] 'в редакторе Plunker. –

6

У меня такое же исключение в Firefox. Попробуйте использовать другой браузер для отладки.

В моем случае FireBug показывает только «Ошибка: Разрешение отказало в доступе к свойству« Отклонение »и больше информации.

Но в Chrome, он показывает больше, как:

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 

Тогда на базе этих исключений следа, я ловлю мою ошибку. Здесь приложите основную причину моей ошибки для вашей справки.

В некотором примере онлайн-документа, он импортируется Наблюдаемый с "import {Observable} from 'rxjs';"

Но это приведет к предыдущему исключению в моем проекте. Измените его на "import {Observable} from 'rxjs/Observable';", тогда все в порядке.

+0

Можете ли вы сделать эту работу в плункер? –

1

Попробуйте импортировать map с пакетом rxjs. Это решило мою проблему.

import 'rxjs/add/operator/map'; 

Если вы используете do и catch методы, которые вы должны иметь больше двух импорта:

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

Вот код для службы ToDo:

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()); 
    } 
} 

Смотрите отредактированный код на Plunker

+0

вы можете сделать это runnable plnker http://plnkr.co/edit/LRc4VLOzhJjql03kguX8?p=preview&open=app%2Fapp.component.ts –

+0

@ParthTrivedi Я его отредактировал. Он работает на моей местной среде. По какой-то причине инъекция зависимостей не работает на этом сайте в сети – Poulad

+0

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

-2

У меня был подобный i и пришли сюда, ища решение. В итоге оказалось, что я пропустил «http: //» из URL-адреса.

Смежные вопросы