9

Ich habe eine Komponente, die gemeint ist, in einem Winkel Werkstoff MdDialog verwendet werden:Angular-Material und Jasmin: „Kein Anbieter für InjectionToken MdDialogData!“

@Component({ 
    ... 
}) 
export class MyComponent { 

    constructor(@Inject(MD_DIALOG_DATA) public data: any, public dialogRef: 
MdDialogRef<MyComponent>) { 
... 
    } 


} 

ich Einheit Test versuchen es mit Jasmin:

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

    beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     imports: [ 
     SharedTestingModule, 
     ], 
     declarations: [ 
     MyComponent, 
     ], 
    }) 
    .compileComponents(); 
    })); 

    ... 

}); 

Leider erhalte ich folgende Fehlermeldung:

Error: No provider for InjectionToken MdDialogData!

SharedTestingModule importiert ein nd exportiert mein eigenes Modul "Angular Material", das selbst MdDialogModule importiert und exportiert.

Wie kann ich diesen Fehler loswerden?

Vielen Dank!

Angular 4.2.4 
Angular Material 2.0.0-beta.7 
Jasmine 2.5.3 

Antwort

22

ich das hinzugefügt:

providers: [ 
    { provide: MD_DIALOG_DATA, useValue: {} }, 
    { provide: MdDialogRef, useValue: {} } 
] 

Und es funktioniert :)

Vielen Dank für Ihre Hilfe @Methgaard!

+0

mir ein Vergnügen, gerne verwenden repliziert Hilfe! :) – methgaard

5

versuchen diese

beforeEach(async(() => { 
TestBed.configureTestingModule({ 
    imports: [ 
    SharedTestingModule, 
    ], 
    declarations: [ 
    MyComponent, 
    ], 
    providers: [ <-- here 
    { 
    provide: MdDialogData, 
    useValue: {}, 
    } 
    ] <-- to here 
}) 
.compileComponents(); 
})); 

lassen Sie mich wissen, wie es geht

3

als Update wird dies auch für diejenigen, die die Tags mit dem Präfix „Mat“ Ich konnte

providers: [{provide: MAT_DIALOG_DATA, useValue: {}}, 
{provide: MatDialogRef, useValue: {}}] 
3

Für Winkel 5 mit neuester Materialkomponente

providers: [ 
    { provide: MAT_DIALOG_DATA, useValue: {} }, 
    { provide: MatDialogRef, useValue: {} } 
] 
Verwandte Themen