首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将属性设置为typescript类中的触发器方法

将属性设置为typescript类中的触发器方法
EN

Stack Overflow用户
提问于 2018-06-18 23:23:51
回答 1查看 224关注 0票数 0

我目前正在尝试在我的类中设置一个属性,以便当它被调用时,它将触发同一个类中的一个方法来执行。我似乎收到了很多与... is not a function相关的错误。

因此,我尝试以不同的方式实现这一点,如下所示。

所以我已经用很多属性和构造函数设置了我的类,我尝试设置一个属性html,它将触发方法getHTML()被激发:

export class DocumentTemplateHistoryDto {
Id: string;
Agent: AgentDto;
AgentId: string;
CreatedDate: Date;
Draft: boolean;
EndDate: Date;
HeaderAndFooter: HeaderAndFooterDto;
HeaderAndFooterId: string;
Live: boolean;
StartDate: Date;
DocumentTemplate: DocumentTemplateDto;
DocumentTemplateId: string;
VersionNumber: number;
Pages: PageDto[];
_MergedHTML: string;
html: () => void;

constructor(_Agent: AgentDto, _AgentId: string, _CreatedDate: Date, _Draft: boolean, _EndDate: Date, _HeaderAndFooter: HeaderAndFooterDto, _HeaderAndFooterId: string,
    _Live: boolean, _StartDate: Date, _DocumentTemplate: DocumentTemplateDto, _DocumentTemplateId: string, _VersionNumber: number, _Pages: PageDto[], _Id?: string) {

    this.Agent = _Agent;
    this.AgentId = _AgentId;
    this.CreatedDate = _CreatedDate;
    this.Draft = _Draft;
    this.EndDate = _EndDate;
    this.HeaderAndFooter = _HeaderAndFooter;
    this.HeaderAndFooterId = _HeaderAndFooterId;
    this.Live = _Live;
    this.StartDate = _StartDate;
    this.DocumentTemplate = _DocumentTemplate;
    this.DocumentTemplateId = _DocumentTemplateId;
    this.VersionNumber = _VersionNumber;
    this.Pages = _Pages;
    this.Id = _Id;


}

getHTML() {
    this.Pages.forEach((item) => {
        this._MergedHTML = this._MergedHTML + item.HTML;
    });
}
}

我似乎不能得到正确的语法来实现这个功能。有谁能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-19 03:23:52

有几种方法可以做到这一点,但我立即想到的是getter或proxy。

Getter和setter可能是实现所需内容的最简单方法,如下所示:

export class DocumentTemplateHistoryDto {

    ...

    public get html(){
        this.Pages.forEach((item) => {
            this._MergedHTML = this._MergedHTML + item.HTML;
        });
    }
}

那就叫它:

new DocumentTemplateHistoryDto().html;

在警报方面,您可以设置一个代理:

export class DocumentTemplateHistoryDto {

...

public htmlProxy = new Proxy ({
    get: (obj, prop) => {
        if(prop === 'html')
            this.Pages.forEach((item) => {
                this._MergedHTML = this._MergedHTML + item.HTML;
            });
      return true;
    }
}); 

那就叫它:

new DocumentTemplateHistoryDto().htmlProxy.html;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50912764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档