для 2.0.0-бета.12

а ниже возникла после обновления с @ angular / material2.0.0-beta.11 в2.0.0-beta.12:

модуль@ Угловой / материал / материал не имеет экспортированного члена 'MdButtonModule'.

Машинопись-код:

import { MdButtonModule } from '@angular/material';

Что случилось?

ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (4,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена 'MdButtonModule'. ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (5,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена 'MdCardModule'. ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (6,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена 'MdCheckboxModule'. ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (7,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена 'MdIconModule'. ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (8,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена 'MdOptionModule'. ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (9,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена "MdProgressSpinnerModule". ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (10,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена 'MdSelectModule'. ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (11,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена "MdSidenavModule". ОШИБКА в c: /dev/my-proj/src/app/app-material/app-material.module.ts (12,3): Модуль '"c: / dev / my-proj / node_modules / @ angular / material / материал "" не имеет экспортированного члена 'MdToolbarModule'. ОШИБКА при ошибке: MdButtonModule не является модулем NgModule в _getNgModuleMetadata (c: \ dev \ my-proj \ node_modules \ @angular \ compiler-cli \ src \ ngtools_impl.js: 140: 15) в _extractLazyRoutesFromStaticModule proj \ node_modules \ @angular \ compiler-cli \ src \ ngtools_impl.js: 109: 26) в c: \ dev \ my-proj \ node_modules \ @angular \ compiler-cli \ src \ ngtools_impl.js: 129: 27 в Array.reduce (native) в _extractLazyRoutesFromStaticModule (c: \ dev \ my-proj \ node_modules \ @angular \ compiler-cli \ src \ ngtools_impl.js: 128: 10) в c: \ dev \ my-proj \ node_modules \ @ angular \ compiler-cli \ src \ ngtools_impl.js: 129: 27 в Array.reduce (native) в _extractLazyRoutesFromStaticModule (c: \ dev \ my-proj \ node_modules \ @angular \ compiler-cli \ src \ nilerto_s_impl.js: 128 : 10) в Object.listLazyRoutesOfModule (c: \ dev \ my-proj \ node_modules \ @angular \ compiler-cli \ src \ ngtools_impl.js: 53: 22) в Function.NgTools_InternalApi_NG_2.listLazyRoutes (c: \ dev \ my- proj \ node_modules \ @angular \ compiler-cli \ src \ ngtools_api.js: 91: 39) в AotPlugin._getLazyRoutesFromNgtools (c: \ dev \ my-proj \ node_modules \ @ngtools \ webpack \ src \ plugin.js: 207: 44) в _donePromise.Promise.resolve.then.then.then.then.then.then (c: \ dev \ my-proj \ node_modules \ @ngtools \ WebPack \ SRC \ plugin.js: 443: 24)

Ответы на вопрос(5)

Заменить import-директиву

import { MatButtonModule } from '@angular/material';

MdSomethingModule соглашение об именованииустарел в бета.11и в бета.12он был полностью заменен поMatSomethingModule.

ule, который можно было импортировать в модуль приложения, чтобы сделать компоненты доступными. Недостатком является то, что встряхивание дерева недостаточно эффективно, чтобы удалить весь неиспользуемый код.

Поэтому MaterialModule устарел, поскольку он определяет модуль пользовательского материала для конкретного проекта, в который вы импортируете и экспортируете только необходимые компоненты. Вот как может выглядеть ваш модуль:

import { NgModule } from '@angular/core';

import {
  MatButtonModule,
  MatMenuModule,
  MatToolbarModule,
  MatIconModule,
  MatCardModule
} from '@angular/material';

@NgModule({
  imports: [
    MatButtonModule,
    MatMenuModule,
    MatToolbarModule,
    MatIconModule,
    MatCardModule
  ],
  exports: [
    MatButtonModule,
    MatMenuModule,
    MatToolbarModule,
    MatIconModule,
    MatCardModule
  ]
})
export class MaterialModule {}

Затем вы импортируете этот модуль в модуль корневого приложения.

Импортируйте MaterialModule и добавляйте его в свой импорт. Вам также необходимо импортировать необходимые для анимации в ваш модуль. Ваш модуль приложения (например, app.module.ts) будет выглядеть примерно так:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { MaterialModule } from './material.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MaterialModule,
    BrowserAnimationsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Вы можете найти больше информации об использовании угловых материалов здесьhttps://alligator.io/angular/angular-material-2/

MatButtonModule вместоMdButtonModule, Вам также придется обновить префикс в вашем шаблоне, т.е.md-button теперь должно бытьmat-button, Чтобы обновить префикс во всем приложении, следуйте инструкциям в этомPrefix Updater.

поскольку2.0.0-beta.12 Md префикс был удален, и вы должны использоватьMat префикс везде. ИзCHANGELOG из2.0.0-beta.11:

Для бета.11 мы приняли решение полностью отказаться от префикса «md» и использовать «mat» для продвижения вперед. Это влияет на все имена классов, свойства, входы, выходы и селекторы (классы CSS были изменены еще в феврале). Префиксы "md" будут удалены в следующей бета-версии.

И изCHANGELOG из2.0.0-beta.12:

Ломать перемены Все префиксы "md" были удалены.

Смотрите это работаетStackBlitz демо с отдельными материальными модулями и использованиемMat префикс.

 Andrew Tobilko23 окт. 2018 г., 20:24
Я никогда не понимаю мир переднего плана. Не могли бы вы объяснить, является ли для вас (внешних разработчиков) нормальным сделать такое ОГРОМНОЕ преобразование имен для номера технической поддержки MINOR (0-beta.11 ->0-beta.12)?
заменить Mat * на Md * для 2.0.0-бета.11замените Md * на Mat * см.неодобрение для 2.0.0-бета.12

использованиеМат префикс вместоМэриленд, Например

import { MatButtonModule, MatCheckboxModule } from '@angular/material'

работал, ноimport { MdButtonModule, MdCheckboxModule } from '@angular/material' получить ошибку

Ваш ответ на вопрос