2016-07-30 5 views
12

Получение этой ошибки после запуска npm в угловом проекте.Как использовать sweetalert2 в angular2

app/app.component.ts(12,7): error TS2304: Cannot find name 'swal'. app/app.component.ts(21,7): error TS2304: Cannot find name 'swal'.

Я создал угловой проект. Внутри app.component.ts я добавил сладкий код предупреждения

export class AppComponent { 
deleteRow() { 
     swal({ 
     title: 'Are you sure?', 
     text: "You won't be able to revert this!", 
     type: 'warning', 
     showCancelButton: true, 
     confirmButtonColor: '#3085d6', 
     cancelButtonColor: '#d33', 
     confirmButtonText: 'Yes, delete it!' 
    }).then(function() { 
     swal(
     'Deleted!', 
     'Your file has been deleted.', 
     'success' 
    ); 
    }) 
    } 
} 

Я сделал

npm install sweetalert2 --save 

, а также добавлен путь в index.html

<script src="node_modules/sweetalert2/dist/sweetalert2.min.js"></script> 
<link rel="stylesheet" type="text/css" href="node_modules/sweetalert2/dist/sweetalert2.css"> 
+1

попытка 'объявить уаг swal: любой,' или установить файл объявления https://github.com/ ОпределенноТип/ОпределенноТип/blob/master/sweetalert/sweetalert.d.ts – yurzui

+0

@yurzui спасибо за быстрый ответ. где мне нужно добавить этот файл? –

+0

На самом деле, если комментировать код swal и делать npm install и после, если я раскомментировал код swal, он работает. –

ответ

19

Решение дается @yurzui является работал только с угловым2. Я пробовал почти все. Плункер может уйти. я ставлю его здесь для других:

Plunker

1) Добавить эти CSS и JS на верхней части index.html

<link rel="stylesheet" href="https://npmcdn.com/[email protected]/dist/sweetalert2.min.css"> 

<script src="https://npmcdn.com/[email protected]/dist/sweetalert2.min.js"></script> 

2) Добавьте эту строку в компонент где вы хотите использовать swal.

declare var swal: any; 

После этих изменений мое пространство имен swale доступно, и я могу использовать его функции.

Я не ввозил ни одного ng2-sweelalert2 или любого другого модуля.

+0

Это сработало для меня, как упоминалось Akash Rao и yurzui, объявляют var swal: любой чуть ниже всех операторов импорта в компаньоне, а затем, используя объект init: swal ({}), где необходимо. – leeroya

+0

Что ЛЕГЕНДА !! Спасибо, это сработало очень хорошо и очень чистый. –

+0

Этот ответ теперь устарел: см. мой ответ ниже или Velu S Gautam's. SweetAlert2 теперь имеет определения типов (bundl ed в lib), и библиотека может быть импортирована как модуль ('import swal from 'sweetalert2'') –

4

Решение @ user1501382 очень удобно иногда для пакетов pure-JavaScript, которые, например, не имеют определений типов, и это было в случае с SweetAlert2, до тех пор, пока несколько недель назад. Кроме того, использование глобальной переменной swal не очень аккуратно, и вы можете сделать гораздо лучше.

Теперь, когда SweetAlert2 имеет тип ОПРЕДЕЛЕНИЯХ, вы можете сделать:

import swal from 'sweetalert2'; 

swal({ ... }); // then use it normally and enjoy type-safety! 

импорта также файл CSS SweetAlert, в через <link> или любой другой. При использовании модуля Bundler как Webpack и у вас есть CSS-погрузчик и стиль-погрузчик настроен, вы также можете сделать что-то вроде:

import 'sweetalert2/dist/sweetalert2.css'; 

Edit: это не должно быть необходимым, так как SweetAlert2 ст. 7.0.0, который объединяет сборку CSS в JavaScript и внедряет стили на странице во время выполнения.

Кроме того, я дам вам открыть свою библиотеку, которая обеспечивает радиально-эск утилиты использовать SweetAlert2 с легкостью и класса: @toverux/ngx-sweetalert2 (это теперь официальная интеграция SweetAlert2 для Угловое)

Дайте ему пытаться!

0

это, как я использую его на моих проектах

npm install sweetalert2 

после установки добавить swal в окно

window.swal = require('sweetalert2'); 

вот и все. , если у вас возникли проблемы с CSS, просто импортировать файл SCSS

@import "node_modules/sweetalert2/src/sweetalert2"; 

или включить файл CSS из каталога node_module

4

НПХ установками SweetAlert2

npm install sweetalert2 

Вы можете добавить

import swal from 'swal'; 
//import swal from 'sweetalert2'; --if above one didn't work 

в вашем компоненте, и вы можете начать использовать, как в своем ком Понент.

swal({ 
    title: 'Error!', 
    text: 'Do you want to continue', 
    type: 'error', 
    confirmButtonText: 'Cool' 
}) 

Вы можете использовать жирную стрелку для поддержания этого.

deleteStaff(staffId: number) { 
    swal({ 
      type:'warning', 
      title: 'Are you sure to Delete Staff?', 
      text: 'You will not be able to recover the data of Staff', 
      showCancelButton: true, 
      confirmButtonColor: '#049F0C', 
      cancelButtonColor:'#ff0000', 
      confirmButtonText: 'Yes, delete it!', 
      cancelButtonText: 'No, keep it' 
     }).then(() => { 
     this.dataService.deleteStaff(staffId).subscribe(
      data => { 
      if (data.hasOwnProperty('error')) { 
       this.alertService.error(data.error); 
      } else if (data.status) { 
       swal({ 
       type:'success', 
       title: 'Deleted!', 
       text: 'The Staff has been deleted.',    
       }) 
      } 
      }, error => { 
      this.alertService.error(error); 
      }); 
     }, (dismiss) => { 
      // dismiss can be 'overlay', 'cancel', 'close', 'esc', 'timer' 
      if (dismiss === 'cancel') { 
      swal({ 
       type:'info', 
       title: 'Cancelled', 
       text: 'Your Staff file is safe :)' 
      }) 
      } 
     }); 
    } 

В угловом-cli.json

"styles": [ 
      "../node_modules/sweetalert2/dist/sweetalert2.css" 

     ], 
"scripts": [ 
      "../node_modules/sweetalert2/dist/sweetalert2.js" 
     ], 
+0

Где я могу найти' angular-cli.json'? Я не могу найти их в кодах, генерируемых ядром dotnet. Я также не могу найти его на Угловом 2 учебнике. Кстати, в генераторных кодах используется webpack.Есть ли способ определить этот css и js на нем? – Kurotsuki

+0

угловой-cli.json поставляется с установкой углового кли. Вы можете статически определять приложение css и js или копировать вышеуказанные файлы в папку css и js, но вам нужно сделать это в следующий раз, когда вы обновите npm. –

+2

Заявление 'import swal from 'swal';' не работал для меня. Вместо этого я использовал 'import swal from 'sweetalert2';' – ranjeet8082

-2

попробовать это: https://sweetalert.js.org/guides/#installation но либо скачать .js файл и сохранить его в sweetalert.min.js в папке активов

в вашем index.html обратитесь к файлу, который вы создали в активах

<script src="assets/sweetalert.min.js"></script> 

и в вашем компоненте записи

declare var swal any 

это работает со мной как волшебство я использовать угловые 4 и ц 2.1

+1

downvoted (извините): предыдущие ответы показывают, как использовать его в современном и безопасном типе. Этот ответ показывает, как вы это сделали бы несколько месяцев назад. –