我已经尝试了这里发布的解决方案和建议(可能是重复的(,但可以弄清楚我错过了什么。
我有一个名为ParentService
abstract class
及其child class
ChildService
如下:
ParentService
import { Injectable } from '@angular/core';
import { MyModel} from './mymodel-model.service';
@Injectable({
providedIn: 'root'
})
export abstract class ParentService {
constructor() { }
//the other post suggeted to add 'static' but it doesn´t solve it
public static word:MyModel = {
"AA":"AA",
"BB":"BB",
}
}
ChildService
import { Injectable } from '@angular/core';
import { MyModel} from './mymodel-model.service';
import { ParentService } from './parent.service';
@Injectable({
providedIn: 'root'
})
export class ChildService extends ParentService {
word2:MyModel = {
"AA":"AA2",
"BB":"BB2",
};
}
从我的html-component
,我可以访问Childservice
中定义的variables
,但是当尝试从其ParentService
读取variables
时,我得到了undefined
{{ child_instance.word2.AA }} // returns 'AA2'
{{ child_instance.word }} // returns undefined
{{ child_instance.word.AA }} // returns error due to undefined "word"
如果您需要静态的 ParentService.word,请在子项中添加一个 getter 应该可以做到这一点:
import { Injectable } from '@angular/core';
import { MyModel} from './mymodel-model.service';
import { ParentService } from './parent.service';
@Injectable({
providedIn: 'root'
})
export class ChildService extends ParentService {
word2:MyModel = {
"AA":"AA2",
"BB":"BB2",
};
get word3(){
return ParentService.word;
}}
}
{{ child_instance.word3.AA }}
现在应该返回"AA">
好吧,经过一些挖掘,我发现 Angular(或至少我的版本 6+(不会"import
/include
"properties
extended class
,更多信息在这里
因此,解决方案是从字面上将variables
/function
从parent
复制到最开始(contructor
(的child
中,更多信息在这里