2017-09-26 95 views
0

我是新来的角。我已经为角项目做了设置。第一次当我解雇ng serve --open命令时,它打开了url并且工作正常。之后,我已经安装角材料。现在,如果我运行该应用程序,它将带我到新的浏览器选项卡。但是显示编译错误。有人可以帮我解决确切的问题。我正在尝试这3个小时。请帮忙。Angular 4素材项目不编译

NPM安装--save @角/材料@角蛋白/ cdk
NPM安装--save @角/动画
NPM安装--save hammerjs NPM安装--save @角/柔性布局@latest

enter image description here

我app.module.ts

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 

import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 
import { MaterialModule } from '@angular/material'; 
import { FlexLayoutModule } from '@angular/flex-layout'; 

import { AppComponent } from './app.component'; 
import 'hammerjs'; 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    BrowserAnimationsModule, 
    MaterialModule, 
    FlexLayoutModule 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

我的package.json

{ 
    "name": "con-fusion", 
    "version": "0.0.0", 
    "license": "MIT", 
    "scripts": { 
    "ng": "ng", 
    "start": "ng serve", 
    "build": "ng build", 
    "test": "ng test", 
    "lint": "ng lint", 
    "e2e": "ng e2e" 
    }, 
    "private": true, 
    "dependencies": { 
    "@angular/animations": "^4.4.3", 
    "@angular/cdk": "^2.0.0-beta.11", 
    "@angular/common": "^4.2.4", 
    "@angular/compiler": "^4.2.4", 
    "@angular/core": "^4.2.4", 
    "@angular/flex-layout": "^2.0.0-beta.9", 
    "@angular/forms": "^4.2.4", 
    "@angular/http": "^4.2.4", 
    "@angular/material": "^2.0.0-beta.11", 
    "@angular/platform-browser": "^4.2.4", 
    "@angular/platform-browser-dynamic": "^4.2.4", 
    "@angular/router": "^4.2.4", 
    "core-js": "^2.4.1", 
    "hammerjs": "^2.0.8", 
    "rxjs": "^5.4.2", 
    "zone.js": "^0.8.14" 
    }, 
    "devDependencies": { 
    "@angular/cli": "1.4.3", 
    "@angular/compiler-cli": "^4.2.4", 
    "@angular/language-service": "^4.2.4", 
    "@types/jasmine": "~2.5.53", 
    "@types/jasminewd2": "~2.0.2", 
    "@types/node": "~6.0.60", 
    "codelyzer": "~3.1.1", 
    "jasmine-core": "~2.6.2", 
    "jasmine-spec-reporter": "~4.1.0", 
    "karma": "~1.7.0", 
    "karma-chrome-launcher": "~2.1.1", 
    "karma-cli": "~1.0.1", 
    "karma-coverage-istanbul-reporter": "^1.2.1", 
    "karma-jasmine": "~1.1.0", 
    "karma-jasmine-html-reporter": "^0.2.2", 
    "protractor": "~5.1.2", 
    "ts-node": "~3.2.0", 
    "tslint": "~5.3.2", 
    "typescript": "~2.3.3" 
    } 
} 

我app.component.html

<div style="text-align:center"> 
    <h1> 
    Welcome to {{title}}! 
    </h1> 
    <img width="300" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg=="> 

    <md-toolbar color="primary"> <span>Ristorante Con Fusion</span> </md-toolbar> 
    </div> 
<h2>Here are some links to help you start: </h2> 
<ul> 
    <li> 
    <h2><a target="_blank" rel="noopener" href="https://angular.io/tutorial">Tour of Heroes</a></h2> 
    </li> 
    <li> 
    <h2><a target="_blank" rel="noopener" href="https://github.com/angular/angular-cli/wiki">CLI Documentation</a></h2> 
    </li> 
    <li> 
    <h2><a target="_blank" rel="noopener" href="https://blog.angular.io/">Angular blog</a></h2> 
    </li> 
</ul> 

我style.scss

@import '[email protected]/material/prebuilt-themes/deeppurple-amber.css'; 


body { 
    padding: 0; 
    margin: 0; 
    font-family: Roboto, sans-serif; 

} 
+0

你不需要材料模块只是沟渠它,一切都应该工作 –

回答

1

其实,MaterialModule不导入的了,你需要输入你想要的只是模块,你可以在这里看到这样的信息:

CHANGELOG.md#breaking-changes

所以,如果你想要的材料,只导入组件要模块,你可以看到组件列表在这里: https://material.angular.io/components

,例如,如果我想物质投入,你去看看API tab要导入的内容:

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 

import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 
import { MatMenuModule} from '@angular/material'; 
import { FlexLayoutModule } from '@angular/flex-layout'; 

import { AppComponent } from './app.component'; 
import 'hammerjs'; 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    BrowserAnimationsModule, 
    MatMenuModule, 
    FlexLayoutModule 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

这是官方plunker例如: http://plnkr.co/edit/o077B6uEiiIgkC0S06dd?p=preview

反正我看不出你正在使用你的HTML的原料成分,所以不知道要使用哪一个。

+0

感谢Al-Mothafar的帮助。它正在工作。 –

2

参见Getting Started With Angular Material 2 (September 4, 2017)

  • 定制材料模块
  • 之前角材料2 Beta 3的,有一个全球性的MaterialModule 可导入在应用程序模块中使组件 可用。不足之处在于,抖动效率不足以清除所有未使用的代码。

    MaterialModule因此已被弃用,有利于定义 项目特定的自定义材料模块,您只需导入和导出 所需的组件。以下是我们的模块的样子:

    不幸的是,官方指南并不像上述文章那样明确。您需要浏览您使用的每个组件并导入该模块,然后将其添加到AppModule的imports部分。

    看起来你只是使用工具栏,所以你需要的唯一模块是MdToolbarModule。

    import { MdToolbarModule } from '@angular/material'; 
    
    @NgModule({ 
        imports: [ 
        ... 
        MdToolbarModule, 
        ], 
    

    从本质上讲,正如上面的文章所解释的那样,您'自己动手'MaterialModule。主要目的似乎是避免在应用程序中部署未使用的材质组件。

    +0

    非常感谢理查德。使用MdToolbarModule后它现在工作正常。经过4个小时的奋斗。这是工作。现在我会好好睡一觉。非常感谢好友。 –

    +0

    感谢您指出这个问题。我正在使用测试版2,所以在下次升级时会遇到这种情况,并且也会花时间搞清楚。我不知道是谁低估了你的问题,似乎有点不合时宜。 –