Angular.io newb here(我知道AngularJS!)。我的应用程序之前正在渲染,但现在它正在编译,但什么也没有渲染。
我有以下index.html文件:
<html lang="en">
<head>
<meta charset="utf-8">
<title>SumanChromeExtension</title>
<base href="/dist/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<app-header></app-header>
<app-root></app-root>
<app-footer></app-footer>
</body>
</html>
以下main.ts文件:
import {enableProdMode} from '@angular/core';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {AppModule} from './app.module';
import {environment} from './environments/environment';
declare var chrome;
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.log(err));
window.addEventListener('message', function (ev: Event) {
console.log('extension received event:', ev);
});
以下app.module.ts文件:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {MatButtonModule, MatCheckboxModule} from '@angular/material';
import { AppHeader } from './app/header/header.component';
import { AppComponent } from './app/pages/home/app.component';
@NgModule({
declarations: [
AppHeader,
AppComponent
],
imports: [
MatButtonModule,
MatCheckboxModule,
BrowserModule,
BrowserAnimationsModule,
],
providers: [],
bootstrap: [
AppHeader,
AppComponent
]
})
export class AppModule { }
app.component.ts看起来像:
import {Component} from '@angular/core';
declare var chrome;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Suman Test Generator';
constructor() {
console.log('constructor was called.');
}
}
和header.component.ts看起来像:
import {Component} from '@angular/core';
declare var chrome;
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class AppHeader {
title = 'Suman Test Generator 4';
constructor() {
console.log('constructor was called.');
}
}
以前渲染的东西,但现在渲染的html看起来像:
所以没有任何东西被渲染。我相信这是一个简单的问题,谁知道呢?就像我说它正在建设没有任何错误,所以。
实际上我检查了控制台,我有这些错误:
compiler.js:24660 Uncaught Error: Template parse errors:
Can't bind to 'mdMenuTriggerFor' since it isn't a known property of 'button'. ("
<span>App Name</span>
<span class="example-spacer"></span>
<button md-button [ERROR ->][mdMenuTriggerFor]="appMenu">
<md-icon>menu</md-icon>
Menu
"): ng:///AppModule/AppHeader.html@6:22
'md-icon' is not a known element:
1. If 'md-icon' is an Angular component, then verify that it is part of this module.
2. If 'md-icon' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
<span class="example-spacer"></span>
<button md-button [mdMenuTriggerFor]="appMenu">
[ERROR ->]<md-icon>menu</md-icon>
Menu
</button>
"): ng:///AppModule/AppHeader.html@7:6
'md-toolbar' is not a known element:
1. If 'md-toolbar' is an Angular component, then verify that it is part of this module.
2. If 'md-toolbar' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
<div>
[ERROR ->]<md-toolbar color="primary">
<span>App Name</span>
<span class="example-spacer"></span>
"): ng:///AppModule/AppHeader.html@3:2
There is no directive with "exportAs" set to "mdMenu" ("
</button>
</md-toolbar>
<md-menu [ERROR ->]#appMenu="mdMenu">
<button md-menu-item> Settings</button>
<button md-menu-item> Contact</but"): ng:///AppModule/AppHeader.html@11:11
'md-menu' is not a known element:
1. If 'md-menu' is an Angular component, then verify that it is part of this module.
2. If 'md-menu' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
</button>
</md-toolbar>
[ERROR ->]<md-menu #appMenu="mdMenu">
<button md-menu-item> Settings</button>
<button md-menu-item> Con"): ng:///AppModule/AppHeader.html@11:2
at syntaxError (compiler.js:485)
at TemplateParser.webpackJsonp.../../../compiler/esm5/compiler.js.TemplateParser.parse (compiler.js:24660)
at JitCompiler.webpackJsonp.../../../compiler/esm5/compiler.js.JitCompiler._parseTemplate (compiler.js:34471)
at JitCompiler.webpackJsonp.../../../compiler/esm5/compiler.js.JitCompiler._compileTemplate (compiler.js:34446)
at compiler.js:34347
at Set.forEach (<anonymous>)
at JitCompiler.webpackJsonp.../../../compiler/esm5/compiler.js.JitCompiler._compileComponents (compiler.js:34347)
at compiler.js:34217
at Object.then (compiler.js:474)
at JitCompiler.webpackJsonp.../../../compiler/esm5/compiler.js.JitCompiler._compileModuleAndComponents (compiler.js:34216)
答案 0 :(得分:1)
第一个问题是一切都需要在app-root的范围内。您的所有组件和模块都必须是root的子级。您需要在app.module.ts中包含组件,并且需要在app.component.html中提供DOM元素。下一个问题是md
前一段时间被mat
取代,因此您在html中使用了过时的素材项目。
如果您希望在项目中使用Angular - Material,那么使用Angular 5,Material 2和Flex-Layout的github仓库:https://github.com/zbagley/ngx-flex-material-template。它还包含一个单独的页眉,正文和页脚,其内容与您希望实现它们的方式类似。