我有我想从两个地方使用组件
- 通常情况下,包括在一些模板选择器例如
<comp-a></comp-a>
- 内部角材料对话框。
当使用具有角材料对话框相同组分,我要注入下面的依赖关系
constructor(
public dialogRef: MatDialogRef<CTConfigurationComponent>,
@Inject(MAT_DIALOG_DATA) public dialogData: any,
) {}
这是工作的罚款以案例2,但病例1与下面的错误打破
尝试使用@Optional()
@Skip()
但没有成功。
问题1:1。是否可以告诉角度DI跳过几个依赖呢?
试过public injector: @Injector
,并在构造函数中调用
this.dialogRef = this.injector.get(MatDialogRef<CTConfigurationComponent>);
也不能正常工作。
编辑-1:
(method) Injector.get(token: any, notFoundValue?: any)
问题2:
有没有像任何类似的事情notFoundValue
的Injector.get
当我们通过构造函数做DI?
任何建议或解释会有所帮助
在你app.module.ts,你需要导入MatDialogModule
,然后在它添加imports
财产
app.module.ts
import {MatDialogModule} from "@angular/material";
@NgModule({
declarations: [CTOnboardingComponent, CTConfigurationComponent, VerifyDomainComponent],
exports: [CTConfigurationComponent, VerifyDomainComponent],
imports: [ CommonModule, MatDialogModule, FormsModule, ReactiveFormsModule, CTAngularImportsModule, CTOnboardingRoutingModule ],
entryComponents: [CTConfigurationComponent, VerifyDomainComponent],
providers: [CTOnboardingService] })
export class CTOnboardingModule {}
尝试很多事情之后,我有此错误的一种变通方法。 在这里张贴的解决方案,因此,它可能会有所帮助别人
所以不是这
constructor(
public dialogRef: MatDialogRef<CTConfigurationComponent>,
@Inject(MAT_DIALOG_DATA) public dialogData: any
) {}
我使用下面的代码
private dialogRef = null;
private dialogData;
constructor(private injector: Injector) {
this.dialogRef = this.injector.get(MatDialogRef, null);
this.dialogData = this.injector.get(MAT_DIALOG_DATA, null);
}
文章来源: How to use same component in normal way and with angular material dialog both?