角度材质样式类不起作用

时间:2018-01-16 16:54:37

标签: javascript html angular angular-material2

我使用 Angular Material 日期选择器添加到我的应用中。由于某种原因,角度材料没有应用原始的角度材料样式。

它在我的应用中的显示方式:

enter image description here

应该如何显示:

enter image description here

我做了什么:

npm install --save @angular/material @angular/cdk

npm install --save @angular/animations

// Added this to the Angular Module whose components require the date picker
import {MatNativeDateModule, MatDatepickerModule} from "@angular/material";

//Added this in the root style.css file for the entire app
@import "~@angular/material/prebuilt-themes/indigo-pink.css";

我不确定我做错了什么。

更新

模块代码:

import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {RouterModule} from "@angular/router";
import {ProposalListComponent} from './components/proposal-list.component';
import {ProposalDetailComponent} from './components/proposal-detail.component';
import {ProposalEditComponent} from './components/proposal-edit.component';
import {ReactiveFormsModule} from "@angular/forms";
import {ProposalEditResolverService} from "./services/proposal-edit-resolver.service";
import {SectorResolverService} from "../root/services/sector-resolver.service";
import {ProposalAddComponent} from './components/proposal-add.component';
import {AuthGuard} from "../authentication/guards/auth.guard";
import {MatNativeDateModule, MatDatepickerModule, MatFormFieldModule, MatInputModule} from "@angular/material";
import {FileDropModule} from "ngx-file-drop";
import {ProposalListResolverService} from "./services/proposal-list-resolver.service";

@NgModule({
    imports: [
       CommonModule,
       RouterModule.forChild([
        {
          path: 'proposals',
          component: ProposalListComponent,
          canActivate: [AuthGuard],
          resolve: {proposals: ProposalListResolverService}
        },
        {
          path: 'proposals/:id',
          component: ProposalEditComponent,
          canActivate: [AuthGuard],
          resolve: {proposal: ProposalEditResolverService, sector: SectorResolverService}
        },
        {
         path: 'proposals/0/new',
         component: ProposalAddComponent,
         canActivate: [AuthGuard],
         resolve: {sector: SectorResolverService}
         }
        ]),
         ReactiveFormsModule,
         MatFormFieldModule,
         MatInputModule,
         MatDatepickerModule,
         MatNativeDateModule,
         FileDropModule
        ],
         declarations: [ProposalListComponent, ProposalDetailComponent,    ProposalEditComponent, ProposalAddComponent],
         providers: [ProposalEditResolverService,     ProposalListResolverService]
         })
    export class ProposalModule {
    }

HTML:

此代码位于" ProposalEditComponent" 中,它是上述模块的一部分。

<input matInput [matDatepicker]="picker" placeholder="Choose a date">
      <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
      <mat-datepicker #picker></mat-datepicker>

7 个答案:

答案 0 :(得分:3)

浪费了两天后就可以了。

如果找不到任何解决方案,只需再次添加棱角材料。它不会影响您的代码,但会添加CSS。不要忘记重新启动角度服务器。

ng add @angular/material

答案 1 :(得分:2)

您是否尝试过包含MatInputModule和MatFormFieldModule?

我认为您仍然需要包含MatInputModule,因为您正在处理输入,因此Angular Material将初始化输入的样式。

//添加此

import {MatNativeDateModule, MatDatepickerModule,MatFormFieldModule,MatInputModule } from "@angular/material";

如果你还在使用MatFormFieldModule,那么你也可以使用表格字段。

和MatInputModule旨在在MatFormFieldModule中工作。 //查看此链接https://material.angular.io/components/form-field/overview

示例代码。

<mat-form-field>
  <input matInput [matDatepicker]="picker" placeholder="Choose a date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

希望这会有所帮助...

答案 2 :(得分:1)

尝试将样式文件添加到angular.json,例如,您可以使用Deeppurple琥珀色预制主题:

"styles": [
    "node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css"
]

此页面上的更多信息: https://material.angular.io/guide/getting-started#step-4-include-a-theme

答案 3 :(得分:1)

这是基于 Angular 11。就像大家说的那样,我确实确保将样式添加到 angular.json(已经存在)和 app.module.ts 中的必要导入。尽管如此,我仍然被弄乱了风格。非常有趣的是,它确实选择了主题颜色,但没有选择控件样式。 我最终在每个组件文件中添加了另一个导入,其中使用了 mat* 组件并且运行良好。

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

请记住,当您添加该导入时,您的 IDE(在我的示例中为 VS Code 和 Visual Studio 2019)会告诉您(通过将其变灰)它不需要并且可以删除。

答案 4 :(得分:0)

根据官方Documentation的Angular Material:

  

所有主题和主题都必须包含主题   您的应用程序的样式。

     

要开始使用预先构建的主题,请包括Angular之一   在您的应用程序中全局使用Material的预制主题。

您只需将以下内容添加到style.css中即可使其正常工作:

@import "~@angular/material/prebuilt-themes/indigo-pink.css";

或者您可以在头标签中直接使用<link>标签。


附注:要创建自己的自定义主题,请访问https://material.angular.io/guide/theming

和平。

答案 5 :(得分:0)

您需要用input包裹<mat-form-field>元素,然后应用Material样式。

<input matInput .... />本身是不够的。

您需要:

<mat-form-field>
    <input matInput .... />
</mat-form-field>

答案 6 :(得分:0)

我知道这可能是一个新手答案,因为我是 Angular 的新手。但是我使用 VSCode 和一个托管 HTML 站点的扩展来在您修改代码时实时显示更改。当您尝试使用它在本地托管 Angular 的组件 html 文件时,它将无法与来自材料 angular 的 CSS 一起使用。 因此,一种可能的解决方案是:在项目文件夹中打开一个终端并运行: ng serve 这让我很棘手。