当我在浏览器中启动Angular 5页面时,我的浏览器控制台出现以下错误。
错误错误:StaticInjectorError(AppModule)[AppComponent - > MatDialog]:StaticInjectorError(平台:核心)[AppComponent - > MatDialog]: NullInjectorError:没有MatDialog的提供者! at _NullInjector.webpackJsonp ... / .. / .. / core / esm5 / core.js._NullInjector.get
我错过了什么?
答案 0 :(得分:17)
如果您@NgModule
中未提供您尝试使用的服务,则通常会发生此错误。
要使用MatDialog
服务,您需要转到模块文件并将MatDialogModule
添加到导入数组中:
import {MatDialogModule} from '@angular/material/dialog';
@NgModule({
imports: [MatDialogModule]
})
export class MyModule {}
您可以在此处找到导入以及有关如何使用对话框的更多信息:https://material.angular.io/components/dialog/api。
答案 1 :(得分:2)
有时候,当您想使用API时也会出现以下错误,那时您需要检查api是对还是错,并在设置API时还要检查空格。
Uncaught (in promise): Error: StaticInjectorError(AppModule)[LoginDialogComponent -> InjectionToken MatDialogData]:
答案 2 :(得分:0)
如果@Inject(MAT_DIALOG_DATA)数据未提供任何数据,则引发错误:任何。尝试提供默认数据。此外,对话框组件的名称应位于相应模块的entryComponents中。
答案 3 :(得分:-2)
尝试在构造函数外部声明并在构造函数内部初始化
我的代码是这样的 我的界面在下面
export interface DoctorDetails
{
UserId:number,
DoctorId:number,
FirstName:string,
LastName:string,
Speciality:string,
EmailId:string,
PhoneNumber1:string,
PhoneNumber2:string,
CountryName:string,
StateName:string,
city:string,
AddressLine1:string,
HospitalName:string,
PrimaryMark:number
}
我的声明和初始化如下所示
export class DoctorDetailsComponent implements OnInit {
url:string="http://hospitalapi.com/api/doctor/GetDoctor/";
doctor:DoctorDetails[];//Declare
constructor(private route:ActivatedRoute,
private http:HttpService
) {
const id =route.snapshot.paramMap.get("id");
console.log(id);
this.url = this.url+id;
this.doctor = new Array<DoctorDetails>();//Initialize
}