在撰写本文时,我已经阅读了所有类似的问题,但在该列表中找不到解决方案。
我搜索了以下链接,但找不到解决方法:
Angular Material v6 Mat-Footer - "Cannot read property 'template' of undefined"
Angular 6 mat-table and footer without page scroll
Angular 6 'mat-button-toggle' is not a known element
'mat-toolbar' is not a known element - Angular 5
How to target md-toolbar-row element in md-toolbar
Mat控件在除脚注组件之外的组件上均能正常工作。 我正在尝试在共享页面页脚组件中使用Mat-toolbar和mat-toolbar-row。我不知道为什么工具栏无法正确显示。 起初,我遇到了这个异常。
未捕获的错误:模板解析错误: 'mat-toolbar-row'不是一个已知元素: 1.如果“ mat-toolbar-row”是Angular组件,则请验证它是否是此模块的一部分。 2.如果“ mat-toolbar-row”是Web组件,则将“ CUSTOM_ELEMENTS_SCHEMA”添加到该组件的“ @ NgModule.schemas”以禁止显示此消息。 (“
然后我在下面的页脚中添加了CUSTOM_ELEMENTS_SCHEMA,但异常消失了。
import { Component, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@Component({
selector: 'app-footer',
templateUrl: './footer.component.html',
styleUrls: ['./footer.component.scss']
})
export class Footer
{
getYear()
{
return new Date().getUTCFullYear();
}
}
@NgModule({
exports: [Footer],
declarations: [Footer],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class FooterModule { }
现在我在浏览器控制台中没有任何异常,我的应用程序正在运行,但是现在不显示mat-toolbar和mat-toolbar-row元素的颜色和图标效果。应用程序只是显示原始数据,而不是准确显示。
我的页脚组件是:
<footer class="app-footer">
<div class="app-footer-link">
<p>
<span>VAA</span> © {{getYear()}}
<a href="https://www.VAA.com" target="_blank">www.VAA.com</a>
</p>
</div>
<mat-toolbar color="primary">
<mat-toolbar-row>
<span>Custom Toolbar</span>
</mat-toolbar-row>
<mat-toolbar-row>
<span>Second Line</span>
<span class="example-spacer"></span>
<mat-icon class="example-icon">verified_user</mat-icon>
</mat-toolbar-row>
<mat-toolbar-row>
<span>Third Line</span>
<span class="example-spacer"></span>
<mat-icon class="example-icon">favorite</mat-icon>
<mat-icon class="example-icon">delete</mat-icon>
</mat-toolbar-row>
</mat-toolbar>
</footer>
此外,我已经将MaterialModule导入了Shared.module.ts中,并将共享模块导入了app.module.ts中。
我在App.Component.html上调用此页脚,而mat-toolbar在App.Component.html上运行良好。
查看对App.Component.html的调用。
<mat-sidenav-content>
<div fxLayout="column" fxFill>
<div id="mainContent" fxFlex>
<router-outlet></router-outlet>
</div>
<app-footer></app-footer>
</div>
</mat-sidenav-content>
</mat-sidenav-container>
这是主题效果逻辑:
@mixin footer-theme($theme) {
$primary: map-get($theme, primary);
$accent: map-get($theme, accent);
$warn: map-get($theme, warn);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
app-footer {
.app-footer {
background: mat-color($primary);
color: mat-color($primary, default-contrast);
}
.app-footer-link a {
color: mat-color($primary, default-contrast);
}
}
}
我想按原样显示此示例: 请通过以下网址查看:https://material.angular.io/components/toolbar/examples
答案 0 :(得分:1)
那是因为您必须导入自定义模块中的组件正在使用的必要模块!见下文:
@NgModule({
imports: [
CommonModule,
MatIconModule,
MatToolbarModule,
// ...
],
declarations: [
Footer,
// ...
]
})
export class FooterModule { }