Angular 2中相同根应用程序的多个实例
发布时间:2020-12-17 10:23:34 所属栏目:安全 来源:网络整理
导读:我们将Angular 2集成到遗留页面中,使功能逐个用户友好.到目前为止,为角度模块交换预渲染的后端小部件效果很好. 但是我遇到了一个我不知道要解决的问题:我编写了一个模块/组件,可以在页面上的不同位置多次出现并使用不同的配置. body div class='somewhere-o
|
我们将Angular 2集成到遗留页面中,使功能逐个用户友好.到目前为止,为角度模块交换预渲染的后端小部件效果很好.
但是我遇到了一个我不知道要解决的问题:我编写了一个模块/组件,可以在页面上的不同位置多次出现并使用不同的配置. <body>
<div class='somewhere-on-the-page'>
<my-widget config='A'></my-widget>
</div>
<div class='somewhere-else-on-the-page'>
<my-widget config='B'></my-widget>
</div>
</body>
Here is a Plunker的情况.您只能看到初始化的第一个匹配项.有没有关于如何解决这个问题的概念?我想我不能使用包装器组件,因为我无法在其中移动整个模板(页面在后端呈现,而角度指令放在那里). 干杯
感谢Tobias Bosch在github上给出的一些指示,这是他提出的一个变通方法的调整版本:
import {ApplicationRef_} from '<project-root>/node_modules/@angular/core/src/application_ref'
@NgModule({
imports: [BrowserModule],declarations: [MyWidgetComponent],entryComponents: [MyWidgetComponent]
})
class MyWidgetModule {
constructor(injector: Injector,cfr: ComponentFactoryResolver,appRef: ApplicationRef) {
const widgetCompFactory = cfr.resolveComponentFactory(MyWidgetComponent);
$(widgetCompFactory.selector).each((_,el) => {
var compRef = widgetCompFactory.create(injector,[],el);
var upcasted = <ApplicationRef_> appRef;
upcasted.registerChangeDetector(compRef.changeDetectorRef);
});
}
}
注意从角度文件导入ApplicationRef_.您需要直接导入它,因为默认情况下它不会在角度输入中导出. 或者,您可以使用$(‘my-widget’)(或您喜欢的任何其他选择器)来获取DOM引用,但我认为在组件上使用预定义选择器更清晰. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
