【发布时间】:2020-01-15 18:54:58
【问题描述】:
我有一个组件正在尝试从 2 个地方使用
- 通常,在某些模板中包括选择器,例如
<comp-a></comp-a>。 - 角度材质对话框的内部。
当使用带有角度材质对话框的相同组件时,我必须注入以下依赖项
constructor(
public dialogRef: MatDialogRef<CTConfigurationComponent>,
@Inject(MAT_DIALOG_DATA) public dialogData: any,
) {}
尝试使用@Optional()、@Skip(),但没有成功。
问题-1: 1. 是否可以告诉 Angular DI 跳过一些依赖项?
试过public injector: @Injector,并在构造函数调用中
this.dialogRef = this.injector.get(MatDialogRef<CTConfigurationComponent>);
也无法正常工作。
EDIT-1:
(method) Injector.get(token: any, notFoundValue?: any)
问题 - 2:
当我们通过构造函数进行 DI 时,是否有类似 notFoundValue 的 Injector.get 的东西?
任何建议或解释都会有所帮助
【问题讨论】:
-
当你使用
MatDialogRef时,你的html是否也包含<CTConfigurationComponent></CTConfigurationComponent>?. -
不,我在一个工作流程中使用组件选择器,而在另一个工作流程中,我在角材料内打开此组件。作为
const dialogRef = this.matDialog.open(CTConfigurationComponent, { minWidth: '320px', maxWidth: '450px', disableClose: true, panelClass: 'consent-banner-panel-class', backdropClass: 'backdrop-class-dark8', data: {} }); -
您可以发布您的
app.module.ts代码吗? -
其实配置组件是featured module,所以和app.module没有关系。
-
@NgModule({ declarations: [CTOnboardingComponent, CTConfigurationComponent, VerifyDomainComponent], exports: [CTConfigurationComponent, VerifyDomainComponent], imports: [ CommonModule, FormsModule, ReactiveFormsModule, CTAngularImportsModule, CTOnboardingRoutingModule ], entryComponents: [CTConfigurationComponent, VerifyDomainComponent], providers: [CTOnboardingService] }) export class CTOnboardingModule {}
标签: angular