Angular 6 Services And Class Inheritance
Solution 1:
Update:
There is already a pull request for that https://github.com/angular/angular/pull/25033
Original version
The problem: seems new angular treeshakable services don't respect inheritance:
First angular defines(1) ngInjectableDef
property on AppService
function. Then you inherit ChilAppService
from AppService
so that child class contains all properties from parent class. And finally when angular tries to define(2) ngInjectableDef
property on ChildAppService
it can't because it already exists(3) thanks to javascript prototypical inheritance.
In order to fix it you can either
1) workaround it through defining undefined ngInjectableDef
property on child service so that it won't read already filled from parent class property and angular will be able to define ngInjectableDef
on child class:
@Injectable({
providedIn: 'root'
})
exportclassChildAppServiceextendsAppService {
static ngInjectableDef = undefined;
constructor() {
super();
this.name = 'CHILD SERVICE';
}
}
2) or report issue in github
3) or use composition instead of inheritance as was suggested in comments.
Post a Comment for "Angular 6 Services And Class Inheritance"