angularjs - Angular 9 - 如何使用组件降级多个模块?
问题描述
我正在尝试将多个 Angular 9 模块分组为 AngularJS 的降级模块。我可以让它对一个人正常工作,但我很难让它对多个人工作。我不断收到这些错误:
与
downgradedModule:
指定
Error while instantiating component 'ExampleComponent': Unable to find the specified downgraded module.
未
downgradedModule:
指定:
Error while instantiating component 'ExampleComponent': 'downgradedModule' not specified.
我已经尝试将值更改downgradedModule
为'SharedModule'
, 'sharedModule'
, 'shared-module'
, 并且SharedModule
没有运气。我不确定在这里还能做什么。
注意:所有手动引导都已完成。不将其包含在我的代码示例中,因为该部分工作正常。就像我说的,当我只降级一个模块时,这很好用
ngx.module.ts:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { downgradeModule, downgradeComponent } from '@angular/upgrade/static';
import { SharedModule } from './shared/shared.module';
import { ViewerModule } from './viewer/viewer.module';
import { ExampleComponent } from './shared/example/example.component';
const sharedModule = (extraProviders) => platformBrowserDynamic(extraProviders).bootstrapModule(SharedModule);
const viewerModule = (extraProviders) => platformBrowserDynamic(extraProviders).bootstrapModule(ViewerModule);
export const NgxModule = angular
.module('ngx', [
downgradeModule(viewerModule),
downgradeModule(sharedModule)
])
.directive('exampleComponent',
downgradeComponent({ component: ExampleComponent, downgradedModule: 'sharedModule' })) // error
.name;
shared.module.ts:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
import { ExampleComponent } from './example/example.component';
@NgModule({
imports: [
BrowserModule,
CommonModule
],
declarations: [
ExampleComponent
],
entryComponents: [
ExampleComponent
]
})
export class SharedModule {
constructor() { }
ngDoBootstrap() {
}
}
查看器.module.ts:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
@NgModule({
imports: [
BrowserModule,
CommonModule
],
declarations: [
PdfComponent
],
entryComponents: [
PdfComponent
]
})
export class ViewerModule {
constructor() { }
ngDoBootstrap() {
}
}
解决方案
我能够在周末进行这项工作,并通过更仔细地阅读文档找到了我的解决方案:
downgradedModule?: string:
组件“所属”的降级模块(如果有)的名称,由对 downgradeModule() 的调用返回。当需要实例化组件时,它是模块,其相应的 Angular 模块将被引导。
来源: https ://angular.io/api/upgrade/static/downgradeComponent
downgradeModule()
其他人可能遇到的一个陷阱是在将其分配给downgradedModule
属性时不能直接调用。您必须先将其降级并先将其存储在变量中,然后再将其传入。
const ng2BootstrapFn = (extraProviders) => platformBrowserDynamic(extraProviders)
.bootstrapModule(SharedModule);
const downgradedSharedModule = downgradeModule(ng2BootstrapFn);
export const NgxModule= angular
.module('ngx', [downgradedSharedModule ])
.directive('exampleComponent', downgradeComponent({
component: ExampleComponent,
downgradedModule: downgradedSharedModule }))
.name;
推荐阅读
- javascript - Javascript 不能用 async 和 promise 覆盖 window.confirm
- java - 关于 Project Reactor 的 flatMap 中的线程的困惑
- android-studio - java - Android Studio build.gradle:无法解决:com.android.support:appcompat-v7:8
- r - 删除列标签的背景颜色,同时保持绘图背景颜色 ggpairs
- c# - .net 框架 (WPF) 引用的依赖关系
- c# - ASP.NET / WCF / IIS 中静态变量的范围是什么?
- macos - 如何使用父文件夹中的数据批量“触摸”子文件夹中的文件
- node.js - POST 请求适用于 Postman 但不适用于 JS
- c# - 如何在会话过期后强制客户端 (RP) 注销用户
- css - 实现固定页眉和滚动,页脚和移动问题