是否可以在一页中多次运行一个 Angular 2 应用程序? [英] Is it possible to run one Angular 2 app several times in one page?

查看:14
本文介绍了是否可以在一页中多次运行一个 Angular 2 应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从 asp.net 网络表单迁移到 Angular 4.我正在逐步完成.更换一个零件并将其投入生产.我在页面中多次加载相同的 Angular 应用程序时遇到问题.例如代码

I'm making migration from asp.net web forms to Angular 4. I'm making it step by step. Replacing one part and placing it in production. I face a problem with loading same Angular app several times in page. For example with code

<root tag="table-ep-component" data="5800"></root>
<root tag="table-ep-component" data="3333"></root>

页面中只有一个加载的应用程序 - 第一个.我怎样才能让它们同时工作?欢迎任何建议

there is only one loaded app in the page - the first one. How can I make them work both? Any suggestions are welcome

推荐答案

您可以使用 Applicationref.bootstrap 方法来完成它的工作:

You can use Applicationref.bootstrap method to do it working:

abstract bootstrap<C>(
  componentFactory: ComponentFactory<C>|Type<C>,
  rootSelectorOrNode?: string|any): ComponentRef<C>;

正如我们所见,此方法可以采用 rootSelectorOrNode 参数,因此我们可以两次引导同一个组件.

As we can see this method can take rootSelectorOrNode parameter so we can bootstrap the same component twice.

ngDoBootstrap 方法 @NgModule 可以帮助我们手动引导我们的应用程序:

ngDoBootstrap method on your root @NgModule can help us to manually bootstrap our application:

@NgModule({
   declarations: [AppComponent],
   imports: [BrowserModule], 
   entryComponents: [AppComponent]
})
export class MenuModule {
   ngDoBootstrap(appRef: ApplicationRef) {
     const rootElements = document.queryselectorAll('root');
     // cast due to https://github.com/Microsoft/TypeScript/issues/4947
     for (const element of rootElements as any as HTMLElement[]){
       appRef.bootstrap(AppComponent, element);
     }
   }
}

另见:

这篇关于是否可以在一页中多次运行一个 Angular 2 应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆