这个想法是有一个通用指令,其中使用组件将接口传递给指令,该指令从接口创建变量数据。非常适合一个组件访问 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;
}
修复方法是这样声明数据
data = <T>{};
无需激活器功能或注入令牌。