angular - Kan inte lösa alla parametrar för MatDialogRef: (?, ?, ?, ?)
Jag gör en modalapplikation i Angular. Jag kopierade kod från Angularts officiella webbplats men detta fungerar inte på mitt system. Denna kod fungerar perfekt i Plunker. Vänligen berätta felet, tack på förhand.
Min fil app.module.ts är denna.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { MatFormFieldModule } from '@angular/material';
import { MatInputModule } from '@angular/material';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
import { AppComponent, DialogOverviewExampleDialog } from './app.component';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';
import { MatDialog, MatDialogRef } from '@angular/material';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
MatFormFieldModule,
MatInputModule,
BrowserAnimationsModule,
FormsModule,
HttpClientModule,
HttpModule,
],
providers: [MatDialogRef],
bootstrap: [AppComponent]
})
export class AppModule { }Min app.component-fil är denna.
import { Component } from '@angular/core';
import { Inject } from '@angular/core';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
animal: string;
name: string;
dialogRef: any;
constructor(public dialog: MatDialog) { }
openDialog(): void {
this.dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
width: '250px',
data: { name: this.name, animal: this.animal }
});
this.dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed');
this.animal = result;
});
}
}
@Component({
selector: 'dialog-overview-example-dialog',
templateUrl: './modal.component.html',
})
export class DialogOverviewExampleDialog {
constructor(public dialogRef: MatDialogRef<DialogOverviewExampleDialog>,@Inject(MAT_DIALOG_DATA) public data: any) { }
onNoClick(): void {
this.dialogRef.close();
}
}Var snäll och låt mig veta var problemet uppstår.
Svar #1
Du behöver lägga till DialogOverviewExampleDialog i declarations och entryComponents (ingångskomponenter).
import { MatDialogModule } from '@angular/material';
@NgModule({
declarations: [
AppComponent,
DialogOverviewExampleDialog
],
entryComponents: [
DialogOverviewExampleDialog,
],
imports: [
BrowserModule,
MatFormFieldModule,
MatInputModule,
BrowserAnimationsModule,
FormsModule,
HttpClientModule,
HttpModule,
MatDialogModule,
],
providers: [MatDialogRef],
bootstrap: [AppComponent]
})
export class AppModule { }
Svar #2
Om du lägger till beroenden direkt från "ng add @angular/material", se till att du stoppar den körande applikationen och kompilerar om Angular-applikationen, vilket gör att de nyligen tillagda beroendena blir tillgängliga.
