【发布时间】:2020-03-05 14:55:17
【问题描述】:
WHEN 我使用自定义ngDoBootstrap 函数而不是默认bootstrap: [AppComponent],如下所示:
@NgModule({
imports: [ BrowserModule, FormsModule, AppRoutingModule ],
declarations: [ AppComponent, HelloComponent ],
exports: [ AppComponent ],
entryComponents: [ AppComponent ],
// bootstrap: [AppComponent],
})
export class AppModule {
constructor(private injector: Injector) {
}
public ngDoBootstrap(): any {
const appElement = createCustomElement(AppComponent, { injector: this.injector });
customElements.define('my-app', appElement);
}
}
那么 应用程序路由已损坏。
它会忽略 URL 中的任何更改,并且仅在我单击 <a [routerLink]='...'> 时才有效。初始路由 / 也未加载。
这一定是由自定义引导机制引起的,因为当我取消注释 bootstrap: [AppComponent] 时,一切正常。
完整代码在这里:stackblitz sample(由于 stackblitz 使用 typescript 版本,需要下载并在本地运行)
如何使路由与自定义应用模块引导一起工作?
【问题讨论】:
-
我添加了一个 polyfill 以使其在 stackblitz 上工作:stackblitz.com/edit/angular-customelements-routing-ts7dyc。 “初始路线/未加载”是什么意思?它重定向到
#/hello,如路由中所定义的 -
@David:首先,由于路由配置,它应该自动重定向到#/hello。它没有。第二,如果你直接打开#/hello,那么路由是没有激活的。此外,对 URL 的任何更改都将被忽略。只有直接点击链接才有效
-
我想我昨天很困惑,我可以发誓它按预期工作!但是我今天再次检查,确实没有用。我发布了一个希望对您有所帮助的答案
标签: angular typescript angular8 angular-router custom-element