2016-11-16 4 views
1

В моем компоненте я звоню службу Rest и хочу сохранить данные, вызов Rest не удается (ожидаемого поведение), поэтому я ожидал, что этот код будет выполняться:Angular2: HTTP Наблюдаемого поток не ясно

ERR => console.log (ERR) & & this.accessLevel == AccessLevel.DISBLED

export class CustomerComponent extends SuperChildComponent{ 
    public static url:string='/orderViewCustomer/'; 
    public id; 
    public allowed: boolean = false; 
    public accessLevel:AccessLevel =null; 
    public componentname:string; 
    public customerData:Customer=null; 

    constructor(private rest:REST,private authenticationService : AuthorizationService) { 
    super(); 
    this.componentname=this.constructor.name; 
    this.accessLevel=this.authenticationService.isUserLoggedIn()?this.authenticationService.componentAccessLevel(this.constructor.name):null; 
    console.log(this.constructor.name +' has '+this.accessLevel); 
    if(this.accessLevel==AccessLevel.ENABLED){ 
     this.getData(); 
    } 
    } 

    private getData():any{ 
    this.rest.get(CustomerComponent.url,this.id).subscribe(data=> this.storeData(data.json()), err => console.log(err) && this.accessLevel==AccessLevel.DISBLED); 
    } 



private storeData(res:Object):any{ 
      //TODO 
     //this.customerData =<Customer>res; 
    this.customerData=<Customer>this.dummy; 
}  

Это метод Достаньте из моей службы отдыха:

get(resource: string, id: number, params: URLSearchParams = new URLSearchParams()) { 
    let headers = this.defaultHeaders; 
    headers.set("Authorization", this.authdata); 
    return this 
     .http 
     .get(this.getUrl(resource) + '/' + id, params); 
    // .map((r: Response) => r.json()); 
} 

но блок ошибок никогда не выполняется, и так же функция StoreData (dat.json()).

Выполняется ли абонентский блок только при успешном вызове?

Есть ли что-нибудь, что мне не хватает здесь?

Благодаря

+0

Не могли бы вы определить "не увенчались успехом? Возвращает ли код ошибки или является ли соединение вообще невозможным? – Sebastian

ответ

1

subscribe(...) поддерживает 3 обратных вызовов

someObservable.subscribe(
    data => this.onSuccessDoSomething(data), 
    err => this.onErrorDoSomethingElse(err), 
() => this.afterObservableCompleted() // after the last onSuccess... 
) 
+0

Важно заметить, что «onCompleted» не вызывается в случае ошибки, а только в случае «onNext». – Sebastian

+0

Вы подразумеваете, что код не работает, потому что ему не хватает параметра? Если это так, тогда я думаю, что JavaScript передаст значение null для третьего аргумента, и вызов все равно будет работать. – bassxzero

+0

Просто попытался ответить на вопрос «Выполняется ли абонентский блок только тогда, когда звонок успешный?» –

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