当前位置: 首页 > 知识库问答 >
问题:

从函数中的派生类访问基成员

井礼骞
2023-03-14

我创建了Angular2 Typescript项目。我有很多表格,所以我想有一个类似基本组件的东西。

这是我的基本组件:

export abstract class ManagementComponent<T> implements BaseComponent {

    protected selectedItem: T;

    protected items: Array<T>;

}

现在有我的子组件。我想从http获取所有项目,然后将其分配给基类

export class CompetencesComponent extends ManagementComponent<Competence> implements OnInit {

    thisField: string;

    constructor(private service: CompetencesService) {
        super();

    }

    ngOnInit(): void {
        this.getCompetences();
    }

    private getCompetences() {
        this.service.getCompetences().subscribe(function (competences: Array<Competence>) {
            this.thisField // ok
            this.items  // not ok            
        })
    }
}

知道如何从订阅方法访问基字段吗?

共有2个答案

严书
2023-03-14
匿名用户

您可以将能力列表设置为父类,如下所示:

    private getCompetences() {
            var self = this;
            this.service.getCompetences().subscribe(function (competences: Array<Competence>) {
                this.thisField // ok
                self.items =  competences; // not ok          
            })
        }

您无法通过< code>this绑定访问< code>items属性的原因是作用域。在回调< code>this绑定中,它被绑定到了其他东西上,这样就失去了上下文。

伊裕
2023-03-14

目前,我希望您不能引用thisField项context。

您可以切换到箭头功能来保留上下文:

this.service.getCompetences().subscribe((competences: Array<Competence>) => { ... }

 类似资料:
  • 我理解您可以从派生类访问基类的成员,然而,我有一个函数需要指向我的基类作为一个整体的指针。例如: 有没有办法从派生类中获得指向这个基类的指针?

  • 我仍然试图掌握抽象基类的概念,以及从派生类中可以做什么和不能做什么。 我有以下代码: 基类中的示例- 在派生类中

  • 下面是一个人为的例子:(实际代码中使用的命名方案太令人困惑) 我有一个班主任,他是第三方图书馆的一部分,不可更改。我也有一些课程延伸到父亲;比如儿子。祖父有一个类似这样的构造函数: 这个构造函数中实际发生的事情并不重要。重要的是,它所做的任何事情都必须由所有派生类完成,因此对的调用是每个派生类构造函数的第一行。这里的含义是,祖父的所有后代的构造函数,无论距离有多远,都必须始终调用super(或调用

  • 除另有说明外,以下所有标准参考均指N4861(2020年3月布拉格后工作草案/C++20 DIS)。 如果基类是可访问的,则可以隐式地将指向派生类的指针转换为指向该基类[...]的指针。 意味着以下示例格式良好: 因为是上(+)的可访问基类。 [...] /5.3作为的成员受到保护,出现在类的成员或友类中,或者出现在从派生的类的成员中,其中作为的成员是公共的、私有的或受保护的,或者 /5.4存在一

  • 首先,我确实在谷歌上做了一个快速搜索,没有一个解释我拍摄的目的。 我的问题是如何在成员函数中访问该消息,例如(中的虚函数)?父类中没有定义或类似的函数,如果调用恰好是我要重写的函数,那么调用该函数是非常没用的。 我使用的是Visual Studio Community 2015,因此编译器特定的方法是可以的,但我更喜欢可移植的解决方案。

  • 问题内容: 我在派生类中创建了基类的实例,并尝试访问受保护的成员。 我可以直接访问派生类中的受保护成员,而无需实例化基类。 基类: 同一包中的派生类- 不同包中的派生类- 当派生类也位于同一包中,而派生类位于不同包中时,如何使用基类的实例访问派生类中基类的受保护成员呢? 如果我将受保护的成员标记为“静态”,则可以使用驻留在不同包中的派生类中的基类实例来访问基类的受保护成员。 问题答案: 没错,您是