angular2のhtml要素でモデルにアクセスする必要があります。私の場合、ng2-dragulaを使用してドラッグアンドドロップを実行し、そのサービスはドラッグされるhtml要素にのみアクセスできます。そして、要素の対応するモデルを更新する必要があります。問題はgithubにあります。angular2のhtml要素でモデルを取得
答えて
ngForが配列からコンパイルされている場合は、bag要素にdragulaModel属性を設定してモデルを提供する必要があります。あなたが項目位置を直すたび
<ul [dragula]='"bag-one"' [dragulaModel]='items'> <li *ngFor="let item of items"></li> </ul>
そして、モデルが同期されます。あなたのコンポーネントでは、これを行うことで、簡単に更新されたモデルを得ることができます。
this.dragulaService.drop.subscribe((value) => {
//let [bagName, e, el] = value;
console.log(this.items);
});
モデル内のアイテムの位置が変更されていることがわかります。
移動しているアイテムを一義的に伝える方法はありませんか? – Umagon
サブスクリプションの引数で指定されたelementList
のelement
のインデックスを検索すると、商品のモデルが表示されます。
dragulaService.drop.subscribe(e => this.onDrop(e.slice(1)));
を参照してください。
UPDATE:簡素化(Draccoのおかげで)
private onDrop(args) {
let [e, el] = args; //element, elementList
let i = el.children.indexOf(e),
item = i+1? this.items[i] : null;
console.log(item); //The item
}
this.items
あなたがdragulaに渡すリストを保存変数です。 (例えば:[dragulaModel]="items"
)。
もっと簡単な方法があればいいですね。あなたがそれを見つけたら教えてください!
古い方法:
private onDrop(args) {
let [e, el] = args; //element, elementList
let item;
for(let i in el.children){
if(el.children[i]==e){
item = this.items[+i];
break;
}
}
console.log(item); //The item
}
EDIT:簡素化中にエラーが発生しました。
el.childrenは必ずES6アレイにラップしてください。
let i = el.children.indexOf(e)
let i = Array.from(el.children).indexOf(e)
にする必要があり、私も親リストからインデックスに子要素を取得するには、予期しない結果を生成し、時には新しい未定義のアイテムを生成したことがわかりました。
代替直接IDソリューション: "要素のモデル" とは、
<ion-item *ngFor="let child of children" [id]="child"></ion-item>
、その後onDrop方法で
console.log(e.id);
- 1. Angular2任意のHTML要素からTemplateRefを取得
- 2. 要素を取得し、ダブル@NgModule Angular2
- 3. htmlソースの要素位置を取得
- 4. Angular2のNativeScriptで要素値を取得する
- 5. 作成後にhtml要素を取得
- 6. html要素からdata-idを取得
- 7. HTML要素(iframe)内の要素数の取得
- 8. Angular2の(DOM)要素の幅を取得する方法
- 9. Angular2クリックイベント:クリックした要素のIDを取得
- 10. 要素のIDを取得する方法ViewChild angular2とjquery?
- 11. HTML文字列のHTML子要素を取得する
- 12. このイベントでhtml要素の幅を取得
- 13. c#でHTML要素の実際のマージンを取得する
- 14. Reactで対象のhtml要素の色を取得
- 15. セレンでHTML要素のテキストを取得する方法は?
- 16. simpe-html-domで要素の内容を取得する
- 17. jQueryで.getが返すdiv要素のHTMLを取得
- 18. htmlファイルからpreg_matchで2つの要素を取得
- 19. JavaScriptでHTML要素の値を取得する
- 20. Angular Jsでカスタムhtml要素の値を取得する方法
- 21. Javascriptで後で追加したHTML要素IDを取得
- 22. nokogiriでhtml要素を取得できますか?
- 23. idでHTML要素を取得できません
- 24. dom xml要素でcdata(html)を取得する
- 25. jQueryでHTML要素からタグを取得
- 26. Jqueryが要素を取得できないhtml
- 27. ExtJsでHTML要素値を取得する方法は?
- 28. php PHP変数であるhtml要素を取得します
- 29. .NETでHTML要素情報を取得する
- 30. HTML要素を位置で取得する
あなたには、いくつかのコンポーネントのプロパティを意味するのですか?いくつかのコードが役に立ちます(Plunkerが優先)。 –
@MarkRajcokコードはgithubにあります。リンクは質問の最後です。私はこの要素を表示させるangular2モデルを意味しました。コードを確認した後に明確でない場合はお知らせください。 –
私は "HTML要素からコンポーネント"へ行く方法を知らないです - つまり、HTMLを指定すると、そのHTML要素が使用されているコンポーネントへの参照を取得する方法がわかりません...コンポーネントそのテンプレートにはHTML要素があります。 –