2017-09-26 70 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,所以在下次升級時會遇到這種情況,並且也會花時間搞清楚。我不知道是誰低估了你的問題,似乎有點不合時宜。 –