2016-11-16 47 views
0

我在@Component中有一些<select class='select'>Angular 2 - JQuery和Select2的指令

我正在關注一個模板,每個選擇都使用名爲Select2的第三方庫進行樣式選擇。該HTML +的jQuery +選擇二碼爲:

$(document).ready(function() { 
    $('.select').select2(); 
}); 

我在想,如果這將是創建這樣一個指令一個好主意,所以我想:

import {Directive, ElementRef} from '@angular/core'; 

@Directive({ 
    selector: '[simple-dropdown]' 
}) 
export class SimpleDropdownDirective { 

    constructor(el: ElementRef) { 
    $(el.nativeElement).select2(); 
    } 

} 

但我發現了在select2()方法錯誤。由於它是第三方庫,我不認爲我可以像我使用jQuery一樣安裝它。

你會建議什麼?

+0

您是否看到過任何或全部http:// stackoverflow。 com/q/36173678/3001761,https://www.npmjs.com/package/angular2-select2,https://www.npmjs.com/package/ng2-select2 – jonrsharpe

+0

@jonrsharpe是的。 Select2只是第三方庫的一個例子。我在不同的圖書館面臨同樣的問題。我想知道如果我可以導入select2.js,所以我可以使我的指令示例工作,如http://stackoverflow.com/a/35055539/5922900看看下拉功能來自'語義'庫,它也被導入。 –

+0

不可避免的*「我如何與任何第三方庫進行交互」*將會過於寬泛。如果您可以顯示您在當前代碼中遇到的具體錯誤,可能有助於解決此特定問題。 – jonrsharpe

回答

0

Select2依賴於jQuery,所以這不會開箱即用。

當你使用jQuery來選擇一個元素時,你不會得到一個本地元素,而是一個jQuery增強元素。 您可以選擇將Select2移植到Angular 2,或者讓它與本機瀏覽器API(如querySelectorAll)一起使用。 (您也可以嘗試向作者發送一個功能請求,但是由於Select2自身是jQuery依賴的,所以我不打算實現它。)

+0

我試圖做的和在語義上做的一樣:http://stackoverflow.com/a/35055539/5922900看看下拉功能來自'semantic'庫,它也被導入。 –