首页 > 解决方案 > 引用在 Angular 中调用的装饰类的实例

问题描述

我有一个这样的装饰班。

@BlingBling
@Component({ ... })
export class Classico implements OnInit {
  processId: string;
}

装饰器是这样实现的。

export function BlingBling(ctor: Function) {
  console.log("Wheheee");
  console.log(ctor);
  console.log(this);
}

我可以看到我可以看到构造函数(并且可能也调用它),但我没有成功访问正在创建的类的实例。我试过了,但它是undefined。没有更多的想法,谷歌搜索没有产生我认为有用的东西。

我想从装饰器(记录目的)向processId字段推送一个值。我可以想象从构造函数中这样做,但这似乎创建了一个我不想创建的依赖项。

编辑 我发现这个博客作者建议使用下面的语法来实现它,但我不确定这是否是正确的方法,因为他放弃了将构造函数传递给装饰器代码的语法。

function Console(message) {
  console.log(message);
  return function(target) {
    console.log('Our decorated class', target);
  };
}

@Console('Hey!')
class ExampleClass {
  constructor() {
    console.log('Yo!');
  }
}

如果它是我们当时处理的类还是类的实例,我也感到困惑。我们是否已经覆盖了原来的构造函数?

标签: angulartypescriptloggingdecorator

解决方案


推荐阅读