2016-09-29 1 views
1

Я следовал инструкции здесь: https://github.com/valor-software/ng2-dragula/wiki#5-min-quickstart, а также здесь: https://www.npmjs.com/package/ng2-dragulaКак настроить угловой быстрый старт с NG2-Dragula

радиально-Quickstart работает, в соответствии с:

git clone https://github.com/angular/quickstart angular2-dragula-test 
npm install 
npm start 

" Мой первый Угловая App»(всплывает в в браузере - так что все работает)

установить Dragula по:

npm install ng2-dragula dragula --save 

Я заменил файлы быстрого запуска точным содержимым wor-software ng2-dragula wiki (первая ссылка).

Если кто-то может дать какие-либо рекомендации (о незарегистрированных шагах, которые являются критическими) или простой проверке здравомыслия, это было бы высоко оценено.

+0

После установки ng2-dragula вы видите какую-либо ошибку в консоли браузера? – Sanket

+1

Ну, на данный момент у меня есть «zone.js: 1274 GET http: // localhost: 3000/ng2-dragula/ng2-dragula 404 (Not Found)», что не очень полезно ... но раньше, чем возиться все, что я установил ng2-dragula, но все равно не мог использовать директиву. Моя IDE не смогла найти директиву Dragula, то есть: import {Dragula, DragulaService} из 'ng2-dragula'; (Dragula не может быть найден, но DragulaService в порядке, как и DragulaModule, когда я импортировал это). Это не ошибка в IDE, потому что найти эти файлы вручную было легко, и я не мог разобрать ссылку на директиву dragula ... – Quaternion

ответ

11

Эти полные инструкции по использованию углового быстрого старта, чтобы создать NG2-Dragula базового тестовое приложение (см нижнего раздел «UPDATE с помощью Углового -CLI»при использовании углового CLI):

Установите новый проект угловой QUICKSTART:

mkdir angular2-dragula-test 
git clone https://github.com/angular/quickstart angular2-dragula-test 
cd angular2-dragula-test 
npm install 
npm start 

Если все хорошо вы должен иметь веб-страницу с надписью «My First Angular 2 App», основная угловая2-quickstart работает, теперь мы добавим dragula.

npm install ng2-dragula dragula 

В index.html мы добавим dragula.css, добавив следующую строку:

<link rel="stylesheet" href="node_modules/dragula/dist/dragula.css"> 

Это мой полный index.html для справки:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Angular QuickStart</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="styles.css"> 
    <!-- dragula css --> 
    <link rel="stylesheet" href="node_modules/dragula/dist/dragula.css"> 

    <!-- Polyfill(s) for older browsers --> 
    <script src="node_modules/core-js/client/shim.min.js"></script> 

    <script src="node_modules/zone.js/dist/zone.js"></script> 
    <script src="node_modules/reflect-metadata/Reflect.js"></script> 
    <script src="node_modules/systemjs/dist/system.src.js"></script> 

    <script src="systemjs.config.js"></script> 
    <script> 
     System.import('app').catch(function(err){ console.error(err); }); 
    </script> 
    </head> 

    <body> 
    <my-app>Loading...</my-app> 
    </body> 
</html> 

systemjs.config.js (ищите два комментарии, читающие «// *** для dragula ******************** требуется следующее:« если вы просто хотите добавить соответствующие строки):

/** 
* System configuration for Angular 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', 
      '@angular/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js', 
      // other libraries 
      'rxjs': 'npm:rxjs', 
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api', 
      //***the following is required by dragula******************** 
      'dragula': 'node_modules/dragula', 
      'ng2-dragula': 'node_modules/ng2-dragula', 
      'contra': 'node_modules/contra', 
      'atoa': 'node_modules/atoa', 
      'ticky': 'node_modules/ticky', 
      'crossvent': 'node_modules/crossvent/src', 
      'custom-event': 'node_modules/custom-event', 
     }, 
     // 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' 
      }, 
      'angular-in-memory-web-api': { 
       main: './index.js', 
       defaultExtension: 'js' 
      }, 
      //***the following is required by dragula******************** 
      'dragula': {main: 'dragula.js', defaultExtension: 'js'}, 
      'ng2-dragula': {defaultExtension: 'js'}, 
      'contra': {main: 'contra.js', defaultExtension: 'js'}, 
      'atoa': {main: 'atoa.js', defaultExtension: 'js'}, 
      'ticky': {main: 'ticky.js', defaultExtension: 'js'}, 
      'crossvent': {main: 'crossvent.js', defaultExtension: 'js'}, 
      'custom-event': {main: 'index.js', defaultExtension: 'js'}, 
     } 
    }); 
})(this); 

Импорт DragulaModule в app.module.ts:

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

import { AppComponent } from './app.component'; 
import { DragulaModule } from 'ng2-dragula/ng2-dragula'; //THIS IS NEW*** 

@NgModule({ 
    imports: [ BrowserModule, DragulaModule ], //ADDED DragulaModule*** 
    declarations: [ AppComponent], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

Заменить app.component.тс со следующим:

import { Component } from '@angular/core'; 

import { DragulaService } from 'ng2-dragula/ng2-dragula'; 

@Component({ 
    selector: 'my-app', 
    template: `<h1>My First Angular 2 App</h1> 
     <div> 
     <div class='wrapper'> 
      <div class='container' [dragula]='"first-bag"'> 
      <div>Drag/drop item 1</div> 
      </div> 
      <div class='container' [dragula]='"first-bag"'> 
      <div>Drag/drop item 2</div> 
      </div> 
     </div> 
     </div> 
    `, 
    viewProviders: [DragulaService], 
    styles: [` 
    .wrapper { 
     display: table; 
    } 
    .container { 
     display: table-cell; 
     background-color: rgba(255, 255, 255, 0.2); 
     width: 50%; 
    } 
    .container:nth-child(odd) { 
     background-color: rgba(0, 0, 0, 0.2); 
    } 
    .container div, 
    .gu-mirror { 
     margin: 10px; 
     padding: 10px; 
     background-color: rgba(0, 0, 0, 0.2); 
     transition: opacity 0.4s ease-in-out; 
    } 
    .container div { 
     cursor: move; 
     cursor: grab; 
     cursor: -moz-grab; 
     cursor: -webkit-grab; 
    } 
    .gu-mirror { 
     cursor: grabbing; 
     cursor: -moz-grabbing; 
     cursor: -webkit-grabbing; 
    } 
    `] 
}) 
export class AppComponent { } 

Обновление с помощью углового CLI

К счастью инструкции легче, чем требуется выше:

Сначала создать новый проект и добавить Драгула:

ng new ngcli-dragula 
cd ngcli-dragula 
npm install ng2-dragula dragula 

Если вы получите сообщение об ошибке, такие как следующие:

npm install ng2-dragula dragula 
[email protected] /home/quaterion/Development/ngcli-dragula 
├── UNMET PEER DEPENDENCY @angular/[email protected] 
├── UNMET PEER DEPENDENCY @angular/[email protected] 
├─┬ [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ └─┬ [email protected] 
│ └── [email protected] 
└── [email protected] 

Затем вам необходимо обновить угловую-CLI, вероятно, хорошая идея, чтобы обновить НПМ тоже:

npm install npm -g 
npm install -g @angular/cli 

Добавьте следующую строку в ваш index.html:

<link rel="stylesheet" href="node_modules/dragula/dist/dragula.css"> 

Импорт DragulaModule в в app.module.ts (см два комментария "// НОВЫЕ"):

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 

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

import { DragulaModule } from 'ng2-dragula/ng2-dragula'; //NEW 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    DragulaModule//NEW 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

Импорт DragulaService в app.component.ts (см два комментария "// НОВЫЕ"):

import { Component } from '@angular/core'; 
import { DragulaService } from 'ng2-dragula/ng2-dragula';//NEW 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'], 
    viewProviders: [DragulaService]//NEW 
}) 
export class AppComponent { 
    title = 'app works!'; 
} 

Обновление HTML (app.component.html), так что есть рабочий пример :

<h1> 
    {{title}} 
</h1> 
<div> 
    <div class='wrapper'> 
     <div class='container' [dragula]='"first-bag"'> 
      <div>Drag/drop item 1</div> 
     </div> 
     <div class='container' [dragula]='"first-bag"'> 
      <div>Drag/drop item 2</div> 
     </div> 
    </div> 
</div> 

Теперь есть рабочий пример, этот необязательный блок CSS сделает пример выглядеть лучше (app.component.css):

.wrapper { 
    display: table; 
} 
.container { 
    display: table-cell; 
    background-color: rgba(255, 255, 255, 0.2); 
    width: 50%; 
} 
.container:nth-child(odd) { 
    background-color: rgba(0, 0, 0, 0.2); 
} 
.container div, 
.gu-mirror { 
    margin: 10px; 
    padding: 10px; 
    background-color: rgba(0, 0, 0, 0.2); 
    transition: opacity 0.4s ease-in-out; 
} 
.container div { 
    cursor: move; 
    cursor: grab; 
    cursor: -moz-grab; 
    cursor: -webkit-grab; 
} 
.gu-mirror { 
    cursor: grabbing; 
    cursor: -moz-grabbing; 
    cursor: -webkit-grabbing; 
} 

Теперь у вас должен быть рабочий пример.

+0

Вы спаситель. Гораздо лучше, чем указано на их сайте. 'systemjs.config.js' помог мне вместе с удалением директивной строки кода в компоненте и просто выполнил' import {DragulaModule} из 'ng2-dragula/ng2-dragula'; // ЭТО НОВЫЕ *** @NgModule ({ импорта: [BrowserModule, DragulaModule] // ADDED DragulaModule *** декларации: [AppComponent], самозагрузки: [AppComponent] }) ' –

+1

Почему это не в документации! Большое спасибо :) – Mellkor

+0

Я все еще получал ошибки, пока я также не добавил свойство «main» в systemjs.config.js. Вот так: ''ng2-dragula': {main: 'ng2-dragula.js ', defaultExtension:' js '} ' – cjn

0

Чтобы устранить "zone.js:1274 GET localhost:3000/ng2-dragula/ng2-dragula 404 (Not Found)" ошибки, добавьте ниже блока в вашем systemjs.config.js

var map =  { 
    ... 
    'dragula': 'node_modules/dragula/dist/dragula.js', 
    'ng2-dragula': 'node_modules/ng2-dragula' 
    }; 

var packages = { 
    ... 
    'dragula': { defaultExtension: 'js' }, 
    'ng2-dragula': {defaultExtension: 'js' } 
    }; 
+0

Я не уверен, что я поместил значения в пакеты для обоих ... Я испытаю позже сегодня благодарю вас. – Quaternion