Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular 4 Service引用了另一种服务良好做法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在Angular 4.x中编写一个软件,对于服务处理的每个api请求,需要知道来自其他服务的信息(Id).

我的问题是关于角度模式和良好实践.对于我的具体案例,最好的方法是什么:

1 – 每次需要使用ID信息执行API请求时,使用服务A来呼叫服务B.像这样:

服务A.

@Injectable()
export class Aservice {

  // ID
  public myId: String;

  [...]
}

服务B.

@Injectable()
export class Bservice {

  constructor(
    private restangular: Restangular,private aservice: Aservice,) { }

  public get(callBACk: (_: String[]) => void) {
    // Sends the request
    return this.restangular
      .all('myrequest')
      .customGET('',{
        myId: this.aservice.myid,})
    [...]
  }

  [...]
}

要么

2 – 永远不要从另一个服务调用服务,并始终使用该组件首先调用Aservice然后使用Bservice上的值(因此每次进行API调用时都会复制相同的代码(或者至少每次调用一次)使用该api调用的组件).

服务A.

@Injectable()
export class Aservice {

  // ID
  public myId: String;

  [...]
}

服务B.

@Injectable()
export class Bservice {

  constructor(
    private restangular: Restangular,) { }

  public get(callBACk: (_: String[]) => void,myId: String) {
    // Sends the request
    return this.restangular
      .all('myrequest')
      .customGET('',{
        myId: myid,})
    [...]
  }

  [...]
}

组件C.

export class CComponent implements OnInit {

  // List of api returned Strings
  public apiList: String[] = [];

  constructor(
    private aservice: Aservice,private bservice: Bservice
  ) {
    this.bservice.get(result => {
      this.apiList = result;
    },this.aservice.myId);
  }

  ngOnInit() {
  }

}

解决方法

我已经使用继承来调用一个服务.我创建了一个Base服务来设置令牌或id信息,如果任何服务需要这些令牌,它们可以很容易地被基本服务扩展.这是一个例子

基础服务

@Injectable()
export class Baseservice {

  public myId: String;

  [...]
}

其他服务

@Injectable()
export class Otherservice extends Baseservice {

  constructor(
    private restangular: Restangular,{
        myId: this.myid,})
    [...]
  }

  [...]
}

我通常使用基本服务来设置身份验证标头来验证apis.

大佬总结

以上是大佬教程为你收集整理的Angular 4 Service引用了另一种服务良好做法全部内容,希望文章能够帮你解决Angular 4 Service引用了另一种服务良好做法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。