Angular 应用程序未呈现任何内容

Angular app is not rendering anything

Angular.io 新手(我知道 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)

第一个问题是一切都需要在app-root的范围内。您的所有组件和模块都必须是 root 的子项。您需要在 app.module.ts 中包含组件,并且需要在 app.component.html 中提供 DOM 元素。下一个问题是 md 不久前被 mat 取代,因此您在 html.

中使用了过时的 Material 项目

如果您想在项目中使用 Angular - Material,这里有一个 github 存储库,它使用 Angular 5,Material 2,和 Flex 布局:https://github.com/zbagley/ngx-flex-material-template。它还有一个单独的页眉、正文和页脚作为包含的组件,与您希望如何实现它们的方式类似。