自定义类中的Angular 2 HttpClient服务

时间:2017-12-18 19:23:17

标签: angular typescript

继续我在Angular 2/4中的自定义课程,我已经开始了:methods in angular typescript class are null after http get,现在我想要超越一步。

这是我的自定义原始课程:

export class Book{
    id: number,
    title: string;
    author: string;
    read: integer;
    author: string;

    constructor() {
    }

    public incRead(times: integer){
        this.read = this.read + times;
    }
}

要从组件中使用此类,我会这样使用它:

this._httpClient.Get<Book[]>(url).subscribe().map(
    (books: Book[]) => {
        const tempbooks = new Array<Book>();
        books.forEach(book => {
            tempbooks.push(Object.assign(new Book(),book);
        }
        return tempbooks;
    }
)

HttpClient not running constructor一样,这样我就可以从组件中调用incRead方法。

现在我想添加一个“post”方法,如下所示:

export class Book{
    id: number
    title: string;
    author: string;
    read: integer;
    author: string;

    private httpClient: HttpClient;

    constructor() {
    }

    public incRead(times: integer){
        this.read = this.read + times;
    }

    public post(): Observable(boolean)
        return this.httpClient.post<boolean>(url + Book.id.toString());
}

但我无法获得注入HttpClient服务的方法。我试过

const injector = ReflectiveInjector.resoveAndCreate([HttpClient]);
this.httpClient = injector.get(HttpClient)

在构造函数中,但我在创建HttpClient实例所需的进样器get方法中收到有关Backend参数的错误。

我一直在尝试不同的选择

  1. 创建外部服务以注入HttpClient(如Get angular 2 service inside a custom class instantiated by me中所示),但我得到与ReflectiveInjector解决方案相同的错误。

  2. 将服务从组件作为参数传递给构造函数,但它与Object.assign(new Book(),book)不兼容。

  3. 也许我正在使用一种糟糕的方法在Angular中创建自定义类(基于我的OOP过去的开发),并且还有一些其他方法可以从我缺少的组件中分离类。

    请善待,我已经完成了我的家庭作业,并没有发现任何让我没有“毛茸茸”代码的正确方向。

0 个答案:

没有答案