javascript - Angular 应用程序没有渲染任何内容

标签 javascript angular angular5

这里是 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 看起来像:

enter image description here

所以什么也没有被渲染。我确信这是一个简单的问题,有人知道吗?就像我说的,它正在构建,没有任何错误,所以。

实际上我检查了控制台,发现了以下错误:

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,这里有一个使用 Angular 5、Material 2 和 Flex-Layout 的 github 存储库:https://github.com/zbagley/ngx-flex-material-template 。它还具有单独的页眉、正文和页脚作为包含的组件,其方式与您希望实现它们的方式类似。

关于javascript - Angular 应用程序没有渲染任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48087435/

相关文章:

javascript - Express render() 中的函数调用未定义

javascript - 同时按下的键

asp.net - 使用Web应用程序录制声音和上传

asp.net-mvc - ASP.NET MVC : handling no-javascript

javascript - 尝试运行 Node.js 应用程序时如何修复 `SyntaxError: Invalid or unexpected token`

javascript - 在父组件相同的两个组件之间发送数据

angular - Material Angular 卡片展示

javascript - 如何使用javascript计算两个时间戳之间的差异

angular - 为什么 Angular Datepicker 发送错误的日期?

angular-material - 'mat-toolbar' 不是已知元素 - Angular 5