我分配从端点接收的数组数据。

我尝试在另一个文件中调用此数组,但它不喜欢它!
我的subscriberNames阵列控制台正确。

我的第一个文件:

export class EngagementService {
    public orgSubSidNames = [];


    let subsidiaryNames = []
    data.forEach(sub => {
        console.log(sub.SubsidiaryName)
        subsidiaryNames.push(sub.SubsidiaryName)
    })
    subsidiaryNames = subsidiaryNames.filter(this.onlyUnique);
    console.log('subsidiary name array' + subsidiaryNames)
    this.orgSubSidNames = subsidiaryNames;

    // This is just a sample script. Paste your real code (javascript or HTML) here.

    if ('this_is' == /an_example/) {
        of_beautifier();
    } else {
        var a = b ? (c % d) : e[f];
    }


第二档:

export class EngagementFilterComponent implements OnInit {
    public subSidNameArray: EngagementService;


    updateSub(data) {
        console.log(data);
        console.log('attempting to print the subsid array' + this.subSidNameArray.orgSubSidNames)
    }


我得到错误:

 Cannot read property 'orgSubSidNames' of undefined

最佳答案

在创建EngagementFilterComponent的代码中

const filter = new EngagementFilterComponent()
filter.subSidNameArray = new EngagementService()


或在构造函数中设置

public subSidNameArray: EngagementService = new EngagementService()


或使用注射

如果您的框架使用注入,请确保您的接收组件使用适当的构造函数。 constructor(private engagementService: EngagementService)

说明

线

 public subSidNameArray: EngagementService


声明您的类包含EngagementService的实例。您尚未创建一个。必须使用new关键字创建该类的实例。 :EngagementService部分是typescript,用于声明subSidNameArray的类型,这是普通javascript中找不到的功能。但是,它不会创建实例。

09-25 16:34