Angular 角度2:将发球传给全班

Angular 角度2:将发球传给全班,angular,typescript,Angular,Typescript,我有一个服务,它从API获取一些数据并返回一个对象,该对象的键为Company[],如下所示: getCompanies(){ return this.authHttp.get(this._companiesUrl) .map(res => { let response = res.json() || []; response.items = response.items.map(thing => new

我有一个服务,它从API获取一些数据并返回一个对象,该对象的键为Company[],如下所示:

getCompanies(){
    return this.authHttp.get(this._companiesUrl)
        .map(res => {
            let response = res.json() || [];
                response.items = response.items.map(thing => new Company(thing) );
                return response;
            });
}
export class Company{

id: number;
....
constructor(obj:any){
    ....
}

// I'd like to be able to do this:
changeName(newName: string){
    this.companyService.changeName(this.id, newName).sub....
}
我的company.model.ts如下所示:

getCompanies(){
    return this.authHttp.get(this._companiesUrl)
        .map(res => {
            let response = res.json() || [];
                response.items = response.items.map(thing => new Company(thing) );
                return response;
            });
}
export class Company{

id: number;
....
constructor(obj:any){
    ....
}

// I'd like to be able to do this:
changeName(newName: string){
    this.companyService.changeName(this.id, newName).sub....
}
在我的公司模型中,我希望有一些方法可以更改公司对象的属性,并将这些更改与服务器进行通信

我很难理解如何将CompanyService注入到Company类中,特别是因为新公司几乎完全是在CompanyService本身中创建的

请让我知道,如果我可以提供进一步的澄清或代码

谢谢

如果您在app.module中提供CompanyService,您将在整个应用程序中使用它的一个实例

在app.module.ts中:

要让它进入公司内部,您可以这样做:

import { CompanyService } from 'whereEverThisFileIs'

export class Company{
  id: number;
....
constructor(obj:any, private _companyService: CompanyService){
....
}

changeName(newName: string){
  this._companyService.changeName(this.id, newName).sub....
}
Angular将从根目录为您注入CompanyService实例

您可以在此处阅读:


你到底想在哪里更改你公司的名称?更改模型内部的名称并将其推送到后端不应在模型内部完成。@Deutro我想在模型内部和后端更改它。。。如果不应该在模型中进行,那么应该在导入服务的组件中进行吗?我想我没有正确地表述它。可以在模型中更改模型的属性。但是对后端的调用不应该在模型内部完成。应该从组件内部调用companyService.changeName方法。@Deutro谢谢,很高兴知道这一点。在这种情况下,我可能会使用接口强制转换JSON,如果我只做属性更改,那么就不需要使用方法了。。。