我正在使用以下代码动态创建组件
addPhone(): void {
const widgetFactory = this._resolver.resolveComponentFactory( PhoneComponent );
this.createdWidgetRef =
this.container.createComponent( widgetFactory );
this.createdWidgetRef.instance.index = this.container.length - 1;
this.createdWidgetRef.instance.containerRef = this.container;
++this.containerIndex
}
组件创建正常。
我有一个ObservableMap,我希望只有一个实例可用于动态创建的PhoneComponent的所有实例。我不能将这个ObservableMap放在PhoneComponent中,因为将为每个PhoneComponent实例创建一个新的map实例(至少现在是这样)。将ObservableMap作为服务注入时会发生这种情况。
有没有办法使用angular2服务来完成这项任务?
注意:输入PhoneComponent的不同实例的所有数据都应该插入到ObservableMap的单个实例中 - 因此组件的多个实例只能存在一个实例。
此外,我不能在bootstrap中使用提供程序,因为我还需要将ObservableMap用于其他组件(例如EmailComponent)。
答案 0 :(得分:0)
在NgModule
中提供非延迟加载的服务
@Injectable()
export class SharedMapService {
private _sharedMap = {};
get sharedMap() { return this._sharedMap; }
}
@NgModule({
imports: [...],
declarations: [...],
providers: [SharedMapService],
})
export class AppModule {}
将此构造函数添加到PhoneComponent
constructor(private sharedMap:SharedMapService) {
console.log(sharedMap.sharedMap);
}