gpt4 book ai didi

angular - 使用 ng2-dragula 拖动和交换网格列表

转载 作者:太空狗 更新时间:2023-10-29 17:15:38 27 4
gpt4 key购买 nike

我有一个列表网格,我正在尝试使用 ng2-dragula 相互拖动和交换网格的图 block

some.component.html

   <md-grid-list rowHeight="200px" id = "cover" >
<md-grid-tile *ngFor="let werbedata of werbedaten"
[class.selected]="werbedata === selectedWerbedata"
[routerLink]="['/flyerdetail',werbedata.artnr]"
[style.background]="'lightblue'" class = "blocks"
[dragula]='"bag-one"'>

<md-list class="example-card">
<md-list-item>Produktname: {{ werbedata.werbetext }}</md-list-item>
<md-list-item>Euro: {{ werbedata.euro }}</md-list-item>
<h3 md-line> Artnr: {{ werbedata.artnr }} </h3>
<p md-line> Werbetext: {{ werbedata.werbetext }} </p>
</md-list>

</md-grid-tile>
</md-grid-list>

some.component.ts

export class FlyerComponent implements OnInit { 
werbedaten: WerbeData[];
selectedWerbedata: WerbeData;

constructor( private werbedatenService: WerbeDatenService ){};

...
...
}

我的想法是在 Drop 事件上交换数据。有没有可以像这样添加到 HTML 中的 onDrop 事件?

(onDrop) = "swap(data)" 然后在组件类中执行 swap(data:any)

或者我必须初始化 dragulaservice?有没有更好的交换方式?

我对 Angular 完全陌生,我发现这很难理解。任何提示将不胜感激?

最佳答案

对于使用 ng2-dragula 从一个列表简单地拖动到另一个列表,您不需要对任何事件采取行动,指令会为您处理。似乎不支持从一个列表切换到另一个列表,但我提供了一个简单的 setyp,希望这能帮助您继续前进。

首先,确保它正确包含在您的 app.module.ts

import { DragulaModule } from 'ng2-dragula';
...
@NgModule({
declarations: [
AppComponent
],
imports: [
DragulaModule,
...
],
providers: [],
bootstrap: [AppComponent]
})

export class AppModule {}

在您的组件中,您需要创建列表。您可能还需要包含来自 node_modules/dragula/dist/dragula.css 的 css 文件。

我已将绑定(bind)添加到 drop 事件,因为这是您所好奇的。此场景只是将新列表打印到控制台并演示了两种方式的绑定(bind)。

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css', './dragula.min.css']
})

export class AppComponent {

list1: number[] = [1, 2, 3, 4];
list2: number[] = [5, 6, 7, 8];

constructor(private dragulaService: DragulaService) {
dragulaService.drop.subscribe((value) => {
this.onDrop(value.slice(1));
});
}

private onDrop(args) {
console.log(this.list1);
console.log(this.list2);
}
}

在您的模板中,您需要添加提供双向数据绑定(bind)的 draguladragulaModel 指令。请注意,这两个列表具有相同的“包”。

<ul [dragula]='"bag-one"' [dragulaModel]='list1'>
<li *ngFor="let item of list1">{{ item }}</li>
</ul>
<ul [dragula]='"bag-one"' [dragulaModel]='list2'>
<li *ngFor="let item of list2">{{ item }}</li>
</ul>

关于angular - 使用 ng2-dragula 拖动和交换网格列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com