首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角业力-没有MatDialogRef的提供者

角业力-没有MatDialogRef的提供者
EN

Stack Overflow用户
提问于 2020-07-28 06:27:54
回答 2查看 1.4K关注 0票数 0

当我试着用角因果报应来测试的时候,它会像这样.

代码语言:javascript
复制
NullInjectorError: StaticInjectorError(DynamicTestModule)[ManageProblemsComponent -> MatDialogRef]: 
StaticInjectorError(Platform: core)[ManageProblemsComponent -> MatDialogRef]: 
NullInjectorError: No provider for MatDialogRef!

组件

代码语言:javascript
复制
import { Component, OnInit, Inject } from '@angular/core';
import { NbDialogRef, NB_WINDOW_CONTEXT } from '@nebular/theme';
import { ApiService } from '../../../../../app/services/api.service';
import { SmartTableData } from '../../../../@core/data/smart-table';
import { NbDialogService } from '@nebular/theme';
import { NbComponentStatus, NbGlobalPhysicalPosition, NbToastrService } from '@nebular/theme';
import { ToasterConfig } from 'angular2-toaster';
import 'style-loader!angular2-toaster/toaster.css';
import { AuthService } from '../../../../services/auth.service';
import { NgxSpinnerService } from "ngx-spinner";
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { DialogData } from '../../manage-alerts/manage-alerts.component';
import { Route, Router } from '@angular/router';

@Component({
  selector: 'ngx-manage-problems',
  templateUrl: './manage-problems.component.html',
  styleUrls: ['./manage-problems.component.scss']
})
export class ManageProblemsComponent  implements OnInit {
  title: String;
  myObject: any;
  VendorsComponentobject: any;
  CrewMembersComponentobject: any;
  crewMembers:any = [];
  vendorMembers:any = [];
  DeliveryAgentMembers:any = [];
  DeliveryAgentManagerMembers:any = [];
  AdminMembers:any = [];
  partialRefundStatus:any;
  partialAmount:any;
  issueData: any;

  refundStatus: boolean;
  refundReason: any = '';
  buttonStatus: boolean = true;
  submitClick: boolean = false;

  constructor(public dialogRef: MatDialogRef<ManageProblemsComponent>,
  @Inject(MAT_DIALOG_DATA) public data: DialogData, 
  private apiService: ApiService,
  private spinner: NgxSpinnerService,
  private toastrService: NbToastrService,
  public router: Router
    ) {
      this.issueData = data;
      this.partialRefundStatus = false;
  }

  currency:any;
  ngOnInit(){
    this.currency =localStorage.getItem('CurrencySymbol');
    localStorage.removeItem('issueDeatilsId');
    localStorage.removeItem('issueType'); 
  }

  manageQueue(): void {
    this.router.navigate(['/pages/orders/manage-queue',this.issueData.reporter._id])
    this.dialogRef.close();
    localStorage.setItem('issueDeatilsId',this.issueData._id)
    localStorage.setItem('issueType',this.issueData.type)
  }

  close(): void {
    this.dialogRef.close();
  }
  
 

  cancelissue(): void {
    
    this.spinner.show();
    const data2 = {
      status: "closed",
      actions: "resolved",
      _id : this.issueData._id
    }
   
    this.apiService.changeIssueStatus(data2).subscribe((res)=>{
      if(res.status == true){
        if(this.issueData.orderId && this.issueData.orderId._id){
          const data3 = {
            status: "cancelled",
            orderID : this.issueData.orderId._id
          }
          this.apiService.cancelOrder(data3).subscribe((res)=>{
            this.dialogRef.close('success');
            this.spinner.hide();
            if(res.status == true){
              this.showToast('success', '', 'Issue has been resolved successfully');
            } else {
                this.showToast('danger', '', 'Error');
            } 
          });
        } else {
          this.dialogRef.close('success');
          this.spinner.hide();
          this.showToast('success', '', 'Issue has been resolved successfully');
        }
      } else {
        this.dialogRef.close('success');
        this.spinner.hide();
        this.showToast('danger', '', 'Error');
      } 
    });
  }
  



 
 

}

Spec.ts

代码语言:javascript
复制
import { async, ComponentFixture, TestBed } from '@angular/core/testing';

import { ManageProblemsComponent } from './manage-problems.component';
import { NbCardModule } from '@nebular/theme';
import { FormsModule } from '@angular/forms';

describe('ManageProblemsComponent', () => {
  let component: ManageProblemsComponent;
  let fixture: ComponentFixture<ManageProblemsComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        NbCardModule,
        FormsModule
      ],
      declarations: [ ManageProblemsComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(ManageProblemsComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

当我添加,providers: [MatDialogRef],它显示Failed: Can't resolve all parameters for MatDialogRef: (?, ?, ?).

Thanks.................................................................................................................................................................................................................................................

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-28 08:26:39

您需要在您的MAT_DIALOG_DATA MatDialogRefTestBed中提供模拟数据。

代码语言:javascript
复制
providers: [{ provide: MatDialogRef, useValue: {} }, { provide: MAT_DIALOG_DATA, useValue: data }]
票数 0
EN

Stack Overflow用户

发布于 2020-07-28 06:33:08

您将需要提供MatDialogRef in TestBed

例如:providers: [{provide : MatDialogRef, useValue : {}}]

您可以使用任何mockValue使用useValue。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63128214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档