Угловой материал: нет поставщика для dialogRef - PullRequest
0 голосов
/ 04 ноября 2018

эй, я пытаюсь использовать угловой материал, и у меня возникла проблема:

Ошибка: ошибка (в обещании): ошибка: StaticInjectorError (AppModule) [MatDialogClose -> MatDialogRef]: StaticInjectorError (Платформа: ядро) [MatDialogClose -> MatDialogRef]: NullInjectorError: Нет поставщика для MatDialogRef!

module.ts:

...
import {
  MatDialogModule,
  MatInputModule,
  MatCardModule,
  MatButtonModule,
  MatToolbarModule,
  MatExpansionModule
} from "@angular/material";

...

@NgModule({
  declarations: [
    AppComponent,
    PostCreateComponent,
    HeaderComponent,
    PostListComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot(routes),
    BrowserAnimationsModule,
    FormsModule,
    ReactiveFormsModule,
    MatInputModule,
    MatCardModule,
    MatButtonModule,
    MatToolbarModule,
    MatExpansionModule,
    MatDialogModule,
    HttpClientModule
  ],
  entryComponents: [PostCreateComponent],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

component1:

import { MatDialog } from "@angular/material";
 constructor(public dataService: DataService, public dialog: MatDialog) {}

    onEdit(postId: string) {
        this.dataService.editMode = true;
        this.dataService.postIdForEdit = postId;
        const dialogRef = this.dialog.open(PostCreateComponent, {
          width: "500px"
        });
      }

component2:

 import { MatDialogRef } from "@angular/material";


      constructor(
        private fb: FormBuilder,
        public dataService: DataService,
        public route: ActivatedRoute,
        private dialogRef: MatDialogRef<PostCreateComponent>
      ) {}

      ...


      onAddPost(form, formDirective: FormGroupDirective) {
   ...
           this.close();
        }

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

Я импортировал все необходимое, так почему я получаю эту ошибку? где еще мне нужно добавить экземпляр MatDialogRef? Я искал по всей сети, но не нашел ответа на эту проблему .... спасибо наизусть

1 Ответ

0 голосов
/ 04 ноября 2018

Вам необходимо импортировать MatDialogModule, MatDialog and MatDialogRef from @angular/material/dialog вместо @angular/material

import { MatDialogModule } from '@angular/material/dialog';

Также необходимо убедиться, что MatDialogRef существует в массиве провайдеров

providers: [{
  provide: MatDialogRef,
  useValue: {
    close: (dialogResult: any) => { }
  }
}]

Выпуск Github

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...