Angular材质StaticInjectorError:没有MatDialog的提供者

时间:2018-02-23 12:10:53

标签: angular typescript material-design angular-material

当我在浏览器中启动Angular 5页面时,我的浏览器控制台出现以下错误。

  

错误错误:StaticInjectorError(AppModule)[AppComponent - >   MatDialog]:StaticInjectorError(平台:核心)[AppComponent - >   MatDialog]:       NullInjectorError:没有MatDialog的提供者!       at _NullInjector.webpackJsonp ... / .. / .. / core / esm5 / core.js._NullInjector.get

我错过了什么?

4 个答案:

答案 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
    
    }