【发布时间】:2019-09-22 05:13:37
【问题描述】:
我正在使用 Angular 5 在 SPFX 解决方案中运行应用程序,但我的应用程序不会触发一些基本的角度事件,例如 onInit 甚至 @Input 集都不起作用。
唯一正常工作的模块和组件是启动 app.component 和 app.module 中的模块和组件。对于所有其他模块,仅触发构造函数,但不会触发所有其他 Angular 生命周期事件。
这是我的 app.webpart.ts:
export default class HelloWorldWebPart extends BaseClientSideWebPart<IHelloAngularWebPartProps> {
constructor() {
super();
}
ngElement: HTMLElement;
public render(): void {
window['webPartContext'] = this.context;
this.domElement.innerHTML = `<app-root [isOnline]='false'></app-root>`;
platformBrowserDynamic().bootstrapModuleFactory(
AppModuleNgFactory, { ngZone: 'noop' })
.catch(
err => console.log('error', err)
);
}
还有我的 app.module
@NgModule({
declarations: [
AppComponent,
],
imports: [
CoreModule,
TrackersModule,
LocalStorageModule.withConfig({
prefix: 'my-app',
storageType: 'localStorage',
}),
RouterModule.forRoot(ROUTES, { useHash: true, preloadingStrategy: PreloadAllModules })
],
providers: [
BackendRequestClass,
{
provide: APP_INITIALIZER, useFactory: (config: BackendRequestClass) => () => config.load(),
deps: [BackendRequestClass], multi: true
},
],
bootstrap: [AppComponent]
})
export class AppModule {
constructor() { }
}
我猜这个问题与如何从 webpart 启动应用程序有关,所以我尝试使用 boostrapModule 而不是 bootstrapModuleFactory 启动应用程序。但我什至不确定这是从 app.module 加载所有模块的正确方法。
platformBrowserDynamic().bootstrapModule(AppModule, {
ngZone: 'noop'
}).catch(err => console.log(err));
但是当我运行它时,我得到了这个错误:
承诺拒绝:找不到“AppModule”的 NgModule 元数据。 ;区域:;任务:Promise.then;值:错误:找不到“AppModule”的 NgModule 元数据。
【问题讨论】:
标签: angular typescript sharepoint spfx