Модуль общего материала не распознан - PullRequest
0 голосов
/ 03 июня 2019

Я следовал этому руководству, чтобы настроить материал для своего проекта. Идея состоит в том, чтобы создать общий модуль для повторного использования в приложении- https://material.angular.io/guide/getting-started

Создано material.module.ts

import { NgModule } from '@angular/core';
    import {
    MatToolbarModule, MatButtonModule, MatSidenavModule,
    MatIconModule, MatListModule, MatMenuModule, MatGridListModule,
    .....
} from '@angular/material';

import { OverlayModule } from '@angular/cdk/overlay';
import { DragDropModule } from '@angular/cdk/drag-drop';

@NgModule({
    imports: [
        MatToolbarModule,
    MatButtonModule,
    MatSidenavModule,
    MatIconModule,
    MatListModule,
    MatMenuModule,
    MatGridListModule,
    MatFormFieldModule,
    MatInputModule,
    MatStepperModule,
    MatSelectModule,
    ........
    ],
    exports: [
    MatToolbarModule,
    MatButtonModule,
    MatSidenavModule,
    MatIconModule,
    MatListModule,
    MatMenuModule,
    MatGridListModule,
    MatFormFieldModule,
    MatInputModule,
    MatStepperModule,
    MatSelectModule,
    ......

    ]
})
export class MaterialModule { }

измененный app.module.ts

import { MaterialModule } from './material.module';

и

imports: [
    MaterialModule,

Затем я создал диалоговое окно компонентов пользовательского дизайна:

alert.component.ts

import { Component, Inject } from '@angular/core';
import { MAT_DIALOG_DATA } from '@angular/material';
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
//tried with and without the following line just incase
import {MaterialModule} from '../../../../material.module';

@Component({
  selector: 'app-alert',
  templateUrl: './alert.component.html',
  styleUrls: ['./alert.component.scss']
})
@NgModule({

  imports: [
    CommonModule,
    MaterialModule
  ]
})
export class AlertComponent {
  constructor(
    @Inject(MAT_DIALOG_DATA)
    public data: ModalAlertData
  ) { }

  getAlertIcon() {
    switch (this.data.alertType) {
      case AlertType.INFO:
        return 'info';
      case AlertType.WARNING:
        return 'warning';
      case AlertType.ERROR:
        return 'error';
    }
  }
}

export class ModalAlertData {
  title: string;
  content: string;
  alertType: AlertType;
  closeButtonLabel: string;

  constructor(data?) {
    if (data) {
      this.title = data.title;
      this.content = data.content;
      this.alertType = data.alertType;
      this.closeButtonLabel = data.closeButtonLabel;
    }
  }
}

export enum AlertType {
  INFO, WARNING, ERROR
}

alert.component.html

<h2 mat-dialog-title>{{ data.title }}</h2>
<mat-dialog-content>
  <div>
    <mat-icon>{{ getAlertIcon() }}</mat-icon>
    {{ data.content }}
  </div>
</mat-dialog-content>
<mat-divider></mat-divider>
<mat-dialog-actions align="center">
  <button mat-raised-button color="primary" [mat-dialog-close]="data.title">
    {{ data.closeButtonLabel }}
  </button>
</mat-dialog-actions>

Я получаю эту ошибку во время выполнения

Uncaught Error: Template parse errors:
'mat-icon' is not a known element:
1. If 'mat-icon' is an Angular component, then verify that it is part of this module.
2. If 'mat-icon' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
<mat-dialog-content>
  <div>
    [ERROR ->]<mat-icon>{{ getAlertIcon() }}</mat-icon>
    {{ data.content }}
  </div>
"): ng:///ComponentModule/AlertComponent.html@3:4
'mat-dialog-content' is not a known element:
1. If 'mat-dialog-content' is an Angular component, then verify that it is part of this module.
2. If 'mat-dialog-content' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("<h2 mat-dialog-title>{{ data.title }}</h2>
[ERROR ->]<mat-dialog-content>
  <div>

1 Ответ

0 голосов
/ 03 июня 2019

попробуйте добавить entryComponents: [AlertComponent ] в ваш app.component.Если это не работает, пожалуйста, поделитесь кодом на stackblitz

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