为什么从泛型初始化的变量会像单例一样?

问题描述 投票:0回答:1

这个想法是有一个通用指令,其中使用组件将接口传递给指令,该指令从接口创建变量数据。非常适合一个组件访问 this.data 数据。但是,如果您有多个组件,则数据就像所有组件共享最后创建的组件的单例一样。

其他一些观察。每个组件似乎都会维护其数据,直到外部事件发生。例如,我订阅了一项服务,该服务充当消费者之间的信使。这些组件可以从其数据中调用和发送数据,并且该组件是唯一的。一旦收到消息,所有组件都会共享接收组件的数据。此外,如果您不使用该通信服务并直接设置数据,则修改的第一个组件将与所有其他组件共享其数据。

奇怪的是 JSON.stringify(this.data) 生成一个空字符串。

我在指令中获取数据的方式是否有缺陷?这是我工作的唯一方法。尝试在构造函数中初始化时,我总是遇到我没有弄清楚的令牌错误。


@Directive({
  selector: 'app-root-directive'
})
export class RootDirective<T> {
  constructor(){}

  data:any= this.activator<T>;

  activator<T>(type: { new(): T ;} ): T {
    return new type();c
  }
}

// consuming component

export class MultiselectComponent extends RootDirective<ISelectData> {

// interface

export interface ISelectData{
  keyId:string;
  value:any;
  controlName:string;
  controlId:string;
  instanceId:string;
  anchorCaption: string;
  placeholder: string;
  sort: boolean;
  single: boolean;
  filterValue: string;
}


angular generics components directive
1个回答
0
投票

修复方法是这样声明数据

data = <T>{};

无需激活器功能或注入令牌。

© www.soinside.com 2019 - 2024. All rights reserved.