【问题标题】:Angular material not working in angular version 9Angular 材料在 Angular 版本 9 中不起作用
【发布时间】:2020-05-29 23:46:15
【问题描述】:

我已将 angular 版本 8 更新为 angular 9,并将 angular 材质更新为版本 9,但它无法正常工作且未显示任何错误。如何解决它。

这里是代码 材料模块

import { NgModule } from '@angular/core';
import {MatButtonModule} from '@angular/material/button';

 @NgModule({
  declarations: [],
  imports: [
    MatButtonModule
  ] 
})
export class MaterialModule { }

app-component.html

<h3>Stroked Buttons</h3>
 <div class="example-button-row">
  <button mat-stroked-button>Basic</button>
  <button mat-stroked-button color="primary">Primary</button>
  <button mat-stroked-button color="accent">Accent</button>
  <button mat-stroked-button color="warn">Warn</button>
  <button mat-stroked-button disabled>Disabled</button>
  <a mat-stroked-button routerLink=".">Link</a>
 </div>

app.module

 import { BrowserModule } from '@angular/platform-browser';
 import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
 import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform browser/animations';
 import { MaterialModule } from './angular-material/material/material.module';
  import { MatButtonModule } from '@angular/material/button';



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

【问题讨论】:

  • 1.你更新到 angular-material 9.0.0 了吗? 2.“不工作”是什么意思?
  • 是的,我更新了 angular-material 9.0.0。 .我导入了 mat 按钮模块,但它显示了简单的按钮
  • 然后显示您用于垫子按钮的代码。基本上,我们需要在问题本身 中提供足够的信息来帮助您找出问题所在。关注按钮的样式/外观不符合预期是一个足够具体的问题。
  • 在AppModule的imports数组中添加MatButtonModule
  • @ShubhamPatil 这是基于您所说的设置的最简单的重新创建:stackblitz.com/edit/angular-gputfr。您能否提供错误消息或不起作用的详细信息。编辑:Prashant 有答案

标签: angular angular-material angular-material2 angular9


【解决方案1】:

您可能还需要将任何材料模块添加到导出中,如下所示:

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

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

@NgModule({
   declarations: [],
   imports: [ MatButtonModule ],
   exports: [ MatButtonModule ]
})

export class MaterialModule { }

这是我在项目中使用的 material.module 的示例:

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

import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatMenuModule } from '@angular/material/menu';
import { MatSidenavModule } from '@angular/material/sidenav';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatToolbarModule } from '@angular/material/toolbar';

const mat = [
  MatButtonModule,
  MatIconModule,
  MatMenuModule,
  MatSidenavModule,
  MatSlideToggleModule,
  MatToolbarModule,
];

@NgModule({
  imports: [
    ...mat,
  ],
  exports: [
    ...mat,
  ],
})
export class MaterialModule { }

这样,添加到数组中的所有内容都将被导入和导出到其他模块。

【讨论】:

  • 是否需要创建MaterialModulets文件
  • 没有,不需要。您可以导入 app.module.ts 中的所有模块或声明的任何其他模块。这只是为了可维护性。
  • Angular 9 和 Angular Material 存在一些问题,我确实添加了导出和导入,但出现错误:这可能意味着声明 MatSidenav 的库 (@angular/material/sidenav) 没有被 ngcc 正确处理,或与 Angular Ivy 不兼容
  • @MJX 你找到解决办法了吗?
【解决方案2】:

对于那些仍在苦苦挣扎的人,我不知道为什么这个问题被否决了,我刚刚重新启动了我的 Visual Studio 代码,它对我有用。

【讨论】:

    【解决方案3】:

    另外,记得在你的全局(styles.css)中添加这个样式@import "~@angular/material/prebuilt-themes/indigo-pink.css";

    在从版本 9 到 12 的一系列升级之后,这对我来说是个问题。

    【讨论】:

      【解决方案4】:

      Angular 材质库 (@angular/material/*) 没有被 ngcc 正确处理,或者与 Angular Ivy(vs.9) 不兼容。

      在 package.json 中添加

      "scripts": {
          "postinstall": "ngcc"
        },

      【讨论】:

        猜你喜欢
        • 2020-10-19
        • 2021-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-16
        • 1970-01-01
        • 2018-12-07
        相关资源
        最近更新 更多