【问题标题】:How to extend a service in angular 7 [duplicate]如何在 Angular 7 中扩展服务 [重复]
【发布时间】:2019-07-14 08:56:59
【问题描述】:

我正在将我的应用从 Angular 3 迁移到 Angular 7,

离子 3 到离子 4

有两个服务BaseHttpService主要负责Http调用和AppService扩展BaseHttpService进行调用。

在迁移Docs中,提到在服务中使用{ providedIn: "root" }

但是没有提到服务中的基类和父类。我尝试了很多方法但没有通过。

我有一个父服务,它有一些依赖项,例如

export abstract class BaseHttpService implements OnInit {

   private baseUrl: string = Constants.BASEURL;
   protected method: string;
   protected serviceUrl: string;
   protected headers: Headers;
   constructor(private http:) {
    this.headers = new Headers();
    this.headers.append('Content-Type', 'application/json')
    this.headers.append('Accept', 'application/json');
   }
}

我想扩展服务

@Injectable({ providedIn: "root" })
export class AppService extends BaseHttpService{
  constructor(private _http: Http, ) {
    super(_http);
}

但在浏览器上运行时抛出错误

【问题讨论】:

  • (private http:) 无类型!!
  • 有什么例外?
  • 请查看此示例链接:这可能对您有帮助。 how to extend service with dependencies in angular 2
  • @GhoulAhmed 这是重复参数属性,不是类型,这是问题的一部分; 访问修饰符是需要删除的。
  • 这是为 Angular 7 而不是 2。我正在迁移到 Angular 7

标签: javascript angular ionic-framework ionic4


【解决方案1】:

基础 Http 服务:

export abstract class BaseHttpService implements OnInit {

   private baseUrl: string = Constants.BASEURL;
   protected method: string;
   protected serviceUrl: string;
   protected headers: Headers;
   constructor(private http: Http) {
    this.headers = new Headers();
    this.headers.append('Content-Type', 'application/json')
    this.headers.append('Accept', 'application/json');
   }
}

应用服务:

@Injectable({ providedIn: "root" })
export class AppService extends BaseHttpService{
  constructor(private _http: Http, private baseHttpService: BaseHttpService ) {
    super(_http, baseHttpService);
}

【讨论】:

  • 您发送了两个参数构造函数(私有_http:Http,私有baseHttpService:BaseHttpService),但在父构造函数中定义了一个参数
  • 是的,因为父类参数必须在子类中重复。
  • 但是子类的参数之一现在是它扩展的类的实例?这有什么意义?
  • 抽象类无法实例化。
  • @manishkumar 对这个问题的回答你可以在这里找到:stackoverflow.com/questions/39038791/… 解决方案是使用注入器进行依赖,然后为超类扩展的类超级这个注入器,抱歉回答错误
猜你喜欢
  • 2014-07-13
  • 2018-06-22
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2019-03-27
  • 2017-01-05
  • 1970-01-01
  • 2019-08-11
相关资源
最近更新 更多