简而言之,我想在web组件的阴影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
的默认提供程序?我必须为渲染器写一个单独的实现吗?
发布于 2019-11-06 09:00:28
您可以覆盖AppModule
的ngDoBootstrap(appRef: ApplicationRef)
方法,并配置在哪些元素中引导哪些组件。
@NgModule({...})
export class AppModule implements DoBootstrap {
ngDoBootstrap(appRef: ApplicationRef) {
...
}
}
https://stackoverflow.com/questions/47146173
复制