从Http更新到HttpClient后的Angular 6提供程序注入错误

时间:2019-02-15 19:56:35

标签: angular typescript angular6 angular-http angular-httpclient

尝试从Angular Http升级到HttpClient时遇到问题,我不知道我做错了什么......

在主应用程序中,我的组件( ComponentA )扩展了一个使用我的lib服务( LibService )的抽象类( MyAbstractClass )。 这个抽象类获得一些资源,并在准备使用它之后。

处理完资源后,我将调用ComponentA实现的抽象方法。

带Http的LibService

@Injectable()
export class LibService {

 constructor(private http: Http) {}

  public getResources(foo) {
      return this.http.get(foo).pipe(map((response) => {
        return response.json()
      }));
  }
 }

带有HttpClient的LibService

@Injectable()
export class LibService {

 constructor(private http: HttpClient) {}

  public getResources(foo) {
      return this.http.get(foo).pipe(map((response) => {
        return response
      }));
  }
 }

ComponentA

export class ComponentA extends MyAbstractClass{

    constructor(private serviceA){
        super();
    }


    doSomething(){
        //With my LibService using http everything works and now I can call

        this.serviceA.doAnotherThing();

        //But when LibService is using HttpClient and
        //I try to use this.serviceA, most of the times it is **undefined**,
    }

}

MyAbstractClass

export abstract class MyAbstractClass { 

    contructor(private myLibService: LibService){

        this.myLibService.getResources('myResources').subscribe ((res) => {

            //At this point I have my resources     
            this.doSomething();
        })
    }

    public abstract doSomething();

}

某些时候没有注入我的serviceA的HttpClient在做什么?以及为什么它可以与Http一起使用?

大多数情况下都会发生这种情况,所以我一直认为这可能是比赛条件。

有什么建议吗?

谢谢!

0 个答案:

没有答案