如何在引导应用程序

时间:2017-11-06 21:31:56

标签: angular

简而言之,我想在Web组件的shadow DOM中引导我的Angular 4应用程序。

开箱即用的行为假定我尝试引导的组件元素存在于浏览器文档对象中。由于我尝试在封闭的阴影DOM中呈现组件,因此document.querySelector找不到我的组件的任何匹配选择器,并且我看到以下错误(以DefaultDomRenderer2.selectRootElement为根):

error-handler.service.ts:20 Error: The selector "app-root" did not match any elements
at DefaultDomRenderer2.webpackJsonp.../../../platform-browser/@angular/platform-browser.es5.js.DefaultDomRenderer2.selectRootElement (platform-browser.es5.js:2791)
at BaseAnimationRenderer.webpackJsonp.../../../platform-browser/@angular/platform-browser/animations.es5.js.BaseAnimationRenderer.selectRootElement (animations.es5.js:401)
at DebugRenderer2.webpackJsonp.../../../core/@angular/core.es5.js.DebugRenderer2.selectRootElement (core.es5.js:13640)
at createElement (core.es5.js:9173)
at createViewNodes (core.es5.js:12153)
at createRootView (core.es5.js:12082)
at callWithDebugContext (core.es5.js:13465)
at Object.debugCreateRootView [as createRootView] (core.es5.js:12782)
at ComponentFactory_.webpackJsonp.../../../core/@angular/core.es5.js.ComponentFactory_.create (core.es5.js:9859)
at ComponentFactoryBoundToModule.webpackJsonp.../../../core/@angular/core.es5.js.ComponentFactoryBoundToModule.create (core.es5.js:3333)

DefaultDomRenderer2似乎不依赖于DOCUMENT提供商。甚至可以在运行时替换DOCUMENT的默认提供程序吗?我是否必须为渲染器编写单独的实现?

1 个答案:

答案 0 :(得分:0)

您可以覆盖ngDoBootstrap(appRef: ApplicationRef)的{​​{1}}方法,并配置要在哪些元素中引导的组件。

AppModule