尝试从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一起使用?
大多数情况下都会发生这种情况,所以我一直认为这可能是比赛条件。
有什么建议吗?
谢谢!