我已经通过以下 SO Question 寻求解决方案:
Angular:7.2.1 ES6 类 ReferenceError:初始化前无法访问“X”
首先,我在 VS Code 终端上收到以下警告:
检测到循环依赖项中的警告:src\app\modules\asset-classes\fixed-income\fixed-deposits\components\fixed-deposits-details\fixed-deposits-details.component.ts -> src\app\modules\asset -classes\fixed-income\fixed-deposits\components\fixed-deposits-form\fixed-deposits-form.component.ts -> src\app\modules\asset-classes\fixed-income\fixed-deposits\components\固定存款细节\固定存款细节.component.ts
检测到循环依赖项中的警告:src\app\modules\asset-classes\fixed-income\fixed-deposits\components\fixed-deposits-form\fixed-deposits-form.component.ts -> src\app\modules\asset -classes\fixed-income\fixed-reposits\components\fixed-deposits-details\fixed-deposits-details.component.ts -> src\app\modules\asset-classes\fixed-income\fixed-deposits\components\固定存款形式\固定存款形式.component.ts
检测到循环依赖项中的警告:src\app\modules\shared\components\common-dialog\common-dialog.component.ts -> src\app\view-manager.service.ts -> src\app\modules\shared\ components\common-dialog\common-dialog.component.ts
检测到循环依赖中的警告:src\app\view-manager.service.ts -> src\app\modules\shared\components\common-dialog\common-dialog.component.ts -> src\app\view-manager。服务.ts
现在,这显然是因为我各自组件中的以下代码:
固定存款-form.component.ts
在保存点击>>
this.viewService.loadSideNavWithCallback(
FixedDepositsDetailsComponent,
(compRef: ComponentRef<any>) => {
compRef.instance.fixedDeposit = fixedDepositEntity;
});
固定存款详细信息.component.ts
在编辑点击>>
this.viewService.loadSideNavWithCallback(
FixedDepositsFormComponent,
(compRef: ComponentRef<any>) => {
compRef.instance.fixedDeposit = this.fixedDeposit;
});
viewService 基本上是我的 ViewManagerService ,它有助于实现角度组件之间的松散耦合,也用于视图导航。由于 FixedDepositsFormsComponent 和 FixedDepositsDetailsComponent 在侧导航中打开(存在于 AppComponent 上),因此 ViewManagerService 负责加载这些组件。
虽然很明显我有一个循环依赖,但我不知道如何修复它。
此外,我的浏览器控制台中出现以下错误:
未捕获的 ReferenceError:在 Module../src/app/modules/asset-classes/fixed-income/fixed-deposits/components/fixed-deposits-的 Module.FixedDeposit (main.js:4274) 初始化之前无法访问“FixedDeposit”细节/固定存款细节.component.ts(固定存款细节.component.ts:21)
现在第 21 行只是指向我在 details 组件上的 @Input 属性:
export class FixedDepositsDetailsComponent implements OnInit {
@Input() fixedDeposit: FixedDeposit;
如果我从我的 FixedDepositsFormComponent 中删除 loadSideNavWithCallback 代码(在保存单击时调用),则没有错误。但我不能取消它,因为我需要该代码来加载详细信息组件。
提前感谢任何帮助。