Hi!

I Need help, I have here is such a service:

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

import { ResourceSettingType }   from './type';

@Injectable()
export class ResourceSettingTypeService {
    constructor (private http: Http) {

    }

    public url = '/backend/resource/setting/types';

    all(): Observable<ResourceSettingType[]> {
        return this.http.get(this.url)
            .map(this.extractData)
            .catch(this.handleError);
    }

    find(id: number): Observable<ResourceSettingType> {
        return this.http.get(this.url + '/' + id)
            .map(this.extractData)
            .catch(this.handleError);
    }

    delete(id: number): Observable<ResourceSettingType> {
        return this.http.delete(this.url + '/' + id)
            .map(this.extractData)
            .catch(this.handleError);
    }

    private extractData(res: Response) {
        let body = res.json();
        return body.data || { };
    }

    private handleError (error: any) {
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 
'Server error';
        console.error(errMsg); // log to console instead
        return Observable.throw(errMsg);
    }
}



This is basic CRUD operations and I have a lot these services. I want to do 
a basic service class

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

import { ResourceSettingType }   from './../../resource/setting/type/type';

export abstract class BaseService {
    public http;

    public url;
    
    all(): Observable<ResourceSettingType[]> {
        return this.http.get(this.url)
            .map(this.extractData)
            .catch(this.handleError);
    }

    find(id: number): Observable<ResourceSettingType> {
        return this.http.get(this.url + '/' + id)
            .map(this.extractData)
            .catch(this.handleError);
    }

    delete(id: number): Observable<ResourceSettingType> {
        return this.http.delete(this.url + '/' + id)
            .map(this.extractData)
            .catch(this.handleError);
    }

    private extractData(res: Response) {
        let body = res.json();
        return body.data || { };
    }

    private handleError (error: any) {
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 
'Server error';

        console.error(errMsg); // log to console instead
        return Observable.throw(errMsg);
    }
}


and

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

import { BaseService } from './../../../common/components/base-service';

@Injectable()
export class ResourceSettingTypeService extends BaseService {
    public url = '/backend/resource/setting/types';
    
    constructor (private http: Http) {
        super();
    }
}


But, I do not know what to do with Observable. Because each has its own 
Observable<ResourceSettingType>

Thanks a lot!



-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to