【问题标题】:ng2-dragula modelDrop event causing array to be undefinedng2-dragula modelDrop 事件导致数组未定义
【发布时间】:2017-06-09 08:28:40
【问题描述】:

似乎无法弄清楚为什么这不起作用。

因此,正如您在此 GIF 中看到的那样,我将一个 div 从一个容器拖到另一个容器,ondrop` 对象消失并且数组变得未定义。

这是我的代码:

主视图.html

<div *ngIf="tvRequests">
    <div class="col-md-4">
        <div class="landing-box">
            <md-card-title>Title</md-card-title>
            <div [dragula]='"requests-bag"' [dragulaModel]="tvRequests.new">
                <br />
                <br />
                <request-card *ngFor="let item of tvRequests.new" [request]="item"></request-card>
            </div>
        </div>
    </div>

    <div class="col-md-4">
        <div class="landing-box">

            <div [dragula]='"requests-bag"' [dragulaModel]="tvRequests.approved">
                <br />
                <br />
                <request-card *ngFor="let item of tvRequests.approved" [request]="item"></request-card>
            </div>
        </div>
    </div>

    <div class="col-md-4">
        <div class="landing-box">
            <md-card-title>Title</md-card-title>
            <div style="border: dashed">
                <div [dragula]='"requests-bag"' [dragulaModel]="tvRequests.available">
                    <br />
                    <br />
                    <request-card *ngFor="let item of tvRequests.available" [request]="item"></request-card>
                </div>
            </div>
        </div>
    </div>
</div>

主视图.ts

import { Component, OnInit } from '@angular/core';
import { DragulaService } from 'ng2-dragula/ng2-dragula';
import { RequestService } from '../services/request.service';
import { ITvRequestModel, IMovieRequestModel, IRequestGrid } from '../interfaces/IRequestModel';

@Component({
    moduleId: module.id,
    templateUrl: './request-grid.component.html'
})
export class RequestGridComponent implements OnInit {

    constructor(private dragulaService: DragulaService, private requestService: RequestService) {
        this.dragulaService.dropModel.subscribe((value: any) => {
            console.log(value);
            console.log(this.tvRequests.new);
            console.log(this.tvRequests.approved);
            console.log(this.tvRequests.available);
        });
    }

    ngOnInit(): void {
        this.requestService.getMovieGrid().subscribe(x => {
            this.movieRequests = x;
        });
        this.requestService.getTvGrid().subscribe(x => {
            this.tvRequests = x;
        });
    }


    movieRequests: IRequestGrid<IMovieRequestModel>;
    tvRequests: IRequestGrid<ITvRequestModel>;

}

RequestsGrid.ts

export interface IRequestGrid<T> {
    available: T[],
    new: T[],
    approved:T[]
}

request-card 组件只是一些样式,不包含任何代码。

如您在Main View.ts 中看到的那样,当我退出时,我正在订阅dropModel 事件并注销以查看发生了什么。 此处为上面拖动的 GIF 的控制台输出:

知道为什么该项目会消失吗?

更新 笨蛋:http://plnkr.co/edit/U5AjZ0Gqnxq8bAznYueG?p=preview

【问题讨论】:

  • 你能创建 plunker 吗?我有类似的代码对我有用。
  • @Jonnysai 我会...但不确定如何在 Plunker 中使用 SystemJs 进行设置...
  • 我知道在 Plunker 中设置 Draugla 非常痛苦。 Longback 我用你可以分叉的 Dragula 创建了基本的 plunker。它plnkr.co/edit/Mm6xq1Jhq5tisTx1y0nn?p=info
  • @Jonnysai 感谢您的帮助!刚刚用 plunker 更新了我的帖子

标签: angular typescript dragula ng2-dragula


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2017-03-17
    • 2018-09-04
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多