【发布时间】:2018-11-04 13:10:25
【问题描述】:
嘿,我正在尝试使用角度材质对话框,但遇到了一个问题:
ERROR 错误:未捕获(承诺):错误: StaticInjectorError(AppModule)[MatDialogClose -> MatDialogRef]: StaticInjectorError(平台:核心)[MatDialogClose -> MatDialogRef]: NullInjectorError: MatDialogRef 没有提供者!
module.ts:
...
import {
MatDialogModule,
MatInputModule,
MatCardModule,
MatButtonModule,
MatToolbarModule,
MatExpansionModule
} from "@angular/material";
...
@NgModule({
declarations: [
AppComponent,
PostCreateComponent,
HeaderComponent,
PostListComponent
],
imports: [
BrowserModule,
RouterModule.forRoot(routes),
BrowserAnimationsModule,
FormsModule,
ReactiveFormsModule,
MatInputModule,
MatCardModule,
MatButtonModule,
MatToolbarModule,
MatExpansionModule,
MatDialogModule,
HttpClientModule
],
entryComponents: [PostCreateComponent],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
组件1:
import { MatDialog } from "@angular/material";
constructor(public dataService: DataService, public dialog: MatDialog) {}
onEdit(postId: string) {
this.dataService.editMode = true;
this.dataService.postIdForEdit = postId;
const dialogRef = this.dialog.open(PostCreateComponent, {
width: "500px"
});
}
组件2:
import { MatDialogRef } from "@angular/material";
constructor(
private fb: FormBuilder,
public dataService: DataService,
public route: ActivatedRoute,
private dialogRef: MatDialogRef<PostCreateComponent>
) {}
...
onAddPost(form, formDirective: FormGroupDirective) {
...
this.close();
}
close() {
this.dialogRef.close();
}
}
我导入了所有需要的东西,为什么会出现这个错误?我还需要在哪里添加MatDialogRef 实例?我已经搜索了整个网络,但没有找到这个问题的答案....衷心感谢
【问题讨论】:
-
在 providers 数组中添加 MatDialogRef。
-
你在哪里使用 MatDialogClose?
-
您的模板可能有问题。您能否为您的对话框附加 HTML 模板?