我正在用angular 2构建模态服务。我解决了大多数问题,但是在将modal组件以良好的 Angular 方式放置在body元素中时遇到了问题。我使用DynamicComponentLoader.loadNextToLocation函数获取模态组件并将其放置在ElementRef函数中常用的DynamicComponentLoader.loadNextToLocation旁边。但是,当我不想将创建的模态放在某个组件中时,我必须操纵DOM来插入创建的模态。我的问题是我可以在模态服务的应用程序中使用根元素吗?当特定元素未作为模态容器提供时,我想实现这一目标。

var elementRef = DOM.query('app');
this.componentLoader.loadNextToLocation(ModalBackdrop, elementRef, backdropBindings)

最佳答案

appElementRef: ElementRef;
constructor(private applicationRef:ApplicationRef, injector: Injector) {
  this.appElementRef = injector.get(applicationRef.componentTypes[0]).elementRef;
}
AppComponent将需要提供elementRef字段,但该字段返回ElementRef

另请参阅https://github.com/angular/angular/issues/6446

10-06 02:52