I'm using Angular Material to add Date Picker to my app. For some reason the angular material is not applying the original angular material styles.
How it displays in my app:
How it SHOULD display:
What I have done:
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";
I'm not sure what I'm doing wrong.
Update:
Module Code:
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:
This code is within the "ProposalEditComponent" which is part of the above module.
<input matInput [matDatepicker]="picker" placeholder="Choose a date">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
While Angular Material does not support defining custom styles or CSS overrides on components' internal elements, you might choose to do this anyway. There are three points to consider while customizing styles for Angular Material components: view encapsulation, CSS specificity, and rendering location.
The class Panel is the simplest container class. It provides space in which an application can attach any other component, including other panels. It uses FlowLayout as default layout manager.
Our solution to ViewEncapsulation was to override very specific css using highly specific css selectors in 1) global css or 2) creating separate style files for certain views / styles / elements, importing into every component required (e.g. styleUrls: [material-table-override. css, component.
According to Official Documentation of Angular Material:
Including a theme is required to apply all of the core and theme styles to your application.
To get started with a prebuilt theme, include one of Angular Material's prebuilt themes globally in your application.
You can simply add the following to your style.css
in order to get it work:
@import "~@angular/material/prebuilt-themes/indigo-pink.css";
Or you can directly include using <link>
tag in your head tag.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With