2016-09-15 2 views
1

У меня есть приложение, которое загружается с Angular 2.0.0, выпуск 9/14/16 после всех выпусков rc. Я пытаюсь добавить Angular Material2, официальный выпуск MD от команды Google. Я копирую/вставляю код со своего сайта Getting Started, за исключением того, что я использую Atom, а не angular-cli, поскольку я уже создал начало приложения. Atom-машинопись находит все и говорит, что ошибок нет. Но, несмотря на провал с большим количеством проб, я неоднократно получаю, что они не обнаружили ошибки консоли, когда модифицированное приложение не загружается.угловой материал2 не работает в приложении Angular 2.0.0

zone.js: 1263 GET http://localhost:3000/node_modules/@angular2-material/button/ 404 (Not Found) scheduleTask @ zone.js: 1263

дом: 27 Ошибка: (SystemJS) ошибка XHR (404 Not Found) загрузка http://localhost:3000/node_modules/@angular2-material/button (...)

zone.js: 1263 GET http://localhost:3000/node_modules/@angular2-material/list/ 404 (не найдено)

Я просмотрел файлы node_modules выше и они существуют в моем коде.

За инструкциями по началу работы, соответствующие коды:

app.module.ts

import { MdButtonModule } from '@angular2-material/button'; 
import { MdListModule } from '@angular2-material/list'; 
@NgModule({ 
    imports:  [ BrowserModule, 
        FormsModule, 
        MdButtonModule, 
        MdListModule, 
        routing 
    ], 

systemjs.config.js

var map = { 
'@angular2-material':     'node_modules/@angular2-material', 
'@angular2-material/core':     'node_modules/@angular2-material/core/core', 
'@angular2-material/list':     'node_modules/@angular2-material/list', 
'@angular2-material/button':     'node_modules/@angular2-material/button' 
}; 
var packages = { 
'app':      { main: 'main.js', defaultExtension: 'js' }, 
'rxjs':      { defaultExtension: 'js' }, 
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }, 
}; 
function packIndex(pkgName) { 
packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; 
} 
function packUmd(pkgName) { 
packages['@angular/'+pkgName] = { main: 'bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; 
} 
var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; 
ngPackageNames.forEach(setPackageConfig); 

HTML-страница имеет пару MD- список, теги md-list-item и md-button.

Что я должен изменить?

+0

https://github.com/angular/material2/ blob/master/src/demo-app/system-config.ts – yurzui

+0

http://stackoverflow.com/questions/39459721/angular2-angular2-material-error-xhr-error-404-not-found-loading-http- l/39462481 # 39462481 – yurzui

+1

https://medium.com/codingthesmartway-com-blog/using-material-design-in-angular-2-83a3128c58b7#.q8t2re7z6 – yurzui

ответ

2

Мне удалось заставить его работать этим утром с (9/16) с Angular2 (final), Angular2-Material 2.0.0-alpha.8-2 и TypeScript 2.0.0. Как вы можете видеть в package.json ниже, у меня есть большинство доступных в настоящее время компонентов Angular2 Material, установленных (и работающих), следуя инструкциям от this video.

Проводка моего system.config.ts, чтобы вы могли видеть это в надежде, что это поможет вам устранить неполадки.

/** 
* System configuration for Angular 2 samples 
* Adjust as necessary for your application needs. 
*/ 
(function (global) { 
    System.config({ 
    paths: { 
     // paths serve as alias 
     'npm:': 'node_modules/' 
    }, 
    // map tells the System loader where to look for things 
    map: { 
     // our app is within the app folder 
     app: 'app', 
     // angular bundles 
     '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 
     '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 
     '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 
     '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 
     '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 
     '@angular/http': 'npm:@angular/http/bundles/http.umd.js', 
     '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 
     '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 

     // other libraries 
     'rxjs':      'npm:rxjs', 
     'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api', 

     // Angular2-Material 
     '@angular2-material/core': 'npm:@angular2-material/core/core.umd.js', 
     '@angular2-material/button': 'npm:@angular2-material/button/button.umd.js', 
     '@angular2-material/card': 'npm:@angular2-material/card/card.umd.js', 
     '@angular2-material/checkbox': 'npm:@angular2-material/checkbox/checkbox.umd.js', 
     '@angular2-material/grid-list': 'npm:@angular2-material/grid-list/grid-list.umd.js', 
     '@angular2-material/icon': 'npm:@angular2-material/icon/icon.umd.js', 
     '@angular2-material/input': 'npm:@angular2-material/input/input.umd.js', 
     '@angular2-material/list': 'npm:@angular2-material/list/list.umd.js', 
     '@angular2-material/radio': 'npm:@angular2-material/radio/radio.umd.js', 
     '@angular2-material/sidenav': 'npm:@angular2-material/sidenav/sidenav.umd.js', 
     '@angular2-material/toolbar': 'npm:@angular2-material/toolbar/toolbar.umd.js', 
    }, 
    // packages tells the System loader how to load when no filename and/or no extension 
    packages: { 
     app: { 
     main: './main.js', 
     defaultExtension: 'js' 
     }, 
     rxjs: { 
     defaultExtension: 'js' 
     }, 
     'angular2-in-memory-web-api': { 
     main: './index.js', 
     defaultExtension: 'js' 
     } 
    } 
    }); 
})(this); 

Соответствующая часть моего package.json:

 ... 
     "dependencies": { 
     "@angular/common": "~2.0.0", 
     "@angular/compiler": "~2.0.0", 
     "@angular/core": "~2.0.0", 
     "@angular/forms": "~2.0.0", 
     "@angular/http": "~2.0.0", 
     "@angular/platform-browser": "~2.0.0", 
     "@angular/platform-browser-dynamic": "~2.0.0", 
     "@angular/router": "~3.0.0", 
     "@angular/upgrade": "~2.0.0", 
     "@angular2-material/button": "^2.0.0-alpha.8-2", 
     "@angular2-material/card": "^2.0.0-alpha.8-2", 
     "@angular2-material/checkbox": "^2.0.0-alpha.8-2", 
     "@angular2-material/core": "^2.0.0-alpha.8-2", 
     "@angular2-material/grid-list": "^2.0.0-alpha.8-2", 
     "@angular2-material/icon": "^2.0.0-alpha.8-2", 
     "@angular2-material/input": "^2.0.0-alpha.8-2", 
     "@angular2-material/list": "^2.0.0-alpha.8-2", 
     "@angular2-material/radio": "^2.0.0-alpha.8-2", 
     "@angular2-material/sidenav": "^2.0.0-alpha.8-2", 
     "@angular2-material/toolbar": "^2.0.0-alpha.8-2", 
     "angular2-in-memory-web-api": "~0.0.19", 
     "core-js": "^2.4.1", 
     "hammerjs": "^2.0.8", 
     "reflect-metadata": "^0.1.3", 
     "rxjs": "~5.0.0-beta.12", 
     "systemjs": "~0.19.27", 
     "zone.js": "^0.6.21" 
     }, 
     "devDependencies": { 
     "concurrently": "^2.2.0", 
     "lite-server": "^2.2.2", 
     "typescript": "^2.0.0", 
     "typings": "^1.3.2" 
     } 
     ... 

Обновлено машинопись до версии 2.0.0.

Также необходимо было зарегистрировать тимпинг для hammerjs (поддержка жестов касания), но я считаю, что вам понадобится только это, если вы используете MdIconModule.

+1

Да, файл system.config был полезен, и ссылка на видео была необходима для очистки следующего раунда ошибок. Но теперь он загружается. Благодарю. –

1

с нарушением изменений на Угловая Материал 2 релиз 2.0.0-alpha.9, вы можете просто отобразить одну строку в systemjs.config.ts

'@angular/material': 'npm:@angular/material/material.umd.js', 

пакет.JSON также становится проще с:

"@angular/material": "^2.0.0-alpha.9-3" 

И не забудьте импортировать NgModule

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

От material2 release:

Angular Material has changed from @angular2-material/... packages to a single package under @angular/material. Along with this change, there is a new NgModule, MaterialModule, that contains all of the components. ...