Typescript 子类变量从父变量返回未定义



我已经尝试了这里发布的解决方案和建议(可能是重复的(,但可以弄清楚我错过了什么。

我有一个名为ParentServiceabstract class及其child classChildService如下:

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"propertiesextended class,更多信息在这里

因此,解决方案是从字面上将variables/functionparent复制到最开始(contructor(的child中,更多信息在这里

最新更新