我有一个要从 2 个地方使用的组件
<comp-a></comp-a>.当使用具有角度材质对话框的相同组件时,我必须注入以下依赖项
constructor(
public dialogRef: MatDialogRef<CTConfigurationComponent>,
@Inject(MAT_DIALOG_DATA) public dialogData: any,
) {}
Run Code Online (Sandbox Code Playgroud)
尝试使用@Optional(),@Skip()但没有成功。
问题 -1 : 1. 是否可以告诉 angular DI 跳过一些依赖项?
尝试过public injector: @Injector,并在构造函数调用中
this.dialogRef = this.injector.get(MatDialogRef<CTConfigurationComponent>);
Run Code Online (Sandbox Code Playgroud)
也不工作。
编辑-1:
(method) Injector.get(token: any, notFoundValue?: any)
Run Code Online (Sandbox Code Playgroud)
问题2:
notFoundValue的Injector.get时候,我们是通过构造函数做DI?任何建议或解释都会有所帮助
Viv*_*mar 12
在尝试了很多事情之后,我找到了解决此错误的方法。在此处发布解决方案,以便对其他人有所帮助
所以而不是这个
constructor(
public dialogRef: MatDialogRef<CTConfigurationComponent>,
@Inject(MAT_DIALOG_DATA) public dialogData: any
) {}
Run Code Online (Sandbox Code Playgroud)
我正在使用下面的代码
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);
}
Run Code Online (Sandbox Code Playgroud)
在您的app.module.ts中,您需要导入MatDialogModule然后将其添加到您的imports属性中
应用程序模块.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 {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1674 次 |
| 最近记录: |