IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Two-way data binding avec un drag and drop


Sujet :

Angular

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    chargé de clientèle
    Inscrit en
    Septembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : chargé de clientèle

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Two-way data binding avec un drag and drop
    Bonjour à tous

    Je viens vers vous car j'ai besoin de vos lumières

    J'ai deux tableaux d'objet avec une possibilité d'effectuer un drag and drop d'un tableau vers l'autre ( que dans un seul sens),cela effectue une copie de l’élément dragué .

    J'aimerais pouvoir modifier le contenu texte uniquement dans le tableau qui reçoit les élément et non pas dans le tableau d'origine , hélas le code mis en place me modifie les données sur les deux tableaux :colere:

    need help Merci d'avance !

    fichier html:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <div class="general-container">
        <div
            cdkDropList
            #bibliothequeArticlesList="cdkDropList"
            [cdkDropListData]="bibliothequeArticles"
            [cdkDropListConnectedTo]="[depotArticlesList]"
            class="bibliotheque-container"
            (cdkDropListDropped)="drop($event)">
            <div class="box" *ngFor="let article of bibliothequeArticles" cdkDrag>
                {{article.label}}</div>
     
        </div>
        <div
            cdkDropList
            #depotArticlesList="cdkDropList"
            [cdkDropListData]="depotArticles"
            class="depot-container"
            (cdkDropListDropped)="drop($event)">
                 <button class="box" *ngFor="let article of depotArticles" cdkDrag>
                    {{article.label}}<br>
                    {{article.content}}
                    <button class="btn btn-xs btn-outline-primary" (click)="open(content)">Modifier le texte</button>
                    <ng-template #content let-c="close" let-d="dismiss">
                        <div class="modal-header">
                          <button type="button" class="close" aria-label="Close" (click)="d('Cross click')">
                            <span aria-hidden="true">&times;</span>
                          </button>
                        </div>
                        <div class="modal-body">
                            <input type="text" class="form-control" [(ngModel)]="article.label">
                            <input type="text" class="form-control" [(ngModel)]="article.content">
     
                        </div>
                        <div class="modal-footer">
                          <button type="button" class="btn btn-primary" (click)="c('Save click')">Save</button>
                        </div>
                      </ng-template>
                </button>
        </div> 
    </div>

    fichier ts


    Code TypeScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    import { Component} from '@angular/core';
    import {CdkDragDrop, moveItemInArray, copyArrayItem} from '@angular/cdk/drag-drop';
    import { NgbModalConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap';
     
     
     
     
     
     
     
    @Component({
      selector: 'app-bibliotheque',
      templateUrl: './bibliotheque.component.html',
      styleUrls: ['./bibliotheque.component.css']
    })
     
    export class BibliothequeComponent  {
     
      constructor(config: NgbModalConfig, private modalService: NgbModal) {
        // customize default values of modals used by this component tree
        config.backdrop = 'static';
        config.keyboard = false;
     
      }
     
     
     
     
      bibliothequeArticles = [
        {
          id: 1,
          label: "titre1", 
          content: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quia blanditiis amet sed doloribus temporibus. Quaerat, quibusdam, incidunt ab amet, esse nostrum perspiciatis perferendis neque eos ad beatae voluptas dolore doloremque."
        },
        {
          id: 2,
          label: "titre2", 
          content: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quia blanditiis amet sed doloribus temporibus. Quaerat, quibusdam, incidunt ab amet, esse nostrum perspiciatis perferendis neque eos ad beatae voluptas dolore doloremque."
        },    
        {
          id: 3,
          label: "titre3", 
          content: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quia blanditiis amet sed doloribus temporibus. Quaerat, quibusdam, incidunt ab amet, esse nostrum perspiciatis perferendis neque eos ad beatae voluptas dolore doloremque."
        },    
        {
          id: 4,
          label: "titre4", 
          content: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quia blanditiis amet sed doloribus temporibus. Quaerat, quibusdam, incidunt ab amet, esse nostrum perspiciatis perferendis neque eos ad beatae voluptas dolore doloremque."
        },    
        {
          id: 5,
          label: "titre5", 
          content: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quia blanditiis amet sed doloribus temporibus. Quaerat, quibusdam, incidunt ab amet, esse nostrum perspiciatis perferendis neque eos ad beatae voluptas dolore doloremque."
        },    
        {
          id: 6,
          label: "titre6", 
          content: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quia blanditiis amet sed doloribus temporibus. Quaerat, quibusdam, incidunt ab amet, esse nostrum perspiciatis perferendis neque eos ad beatae voluptas dolore doloremque."
        },
     
      ];
      depotArticles = [
        {
          id: 6,
          label: "titre6", 
          content: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quia blanditiis amet sed doloribus temporibus. Quaerat, quibusdam, incidunt ab amet, esse nostrum perspiciatis perferendis neque eos ad beatae voluptas dolore doloremque."
        },
     
      ]
     
      drop(event: CdkDragDrop<string[]>) {
        if (event.previousContainer === event.container) {
          moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
     
     
        } else {
          copyArrayItem(event.previousContainer.data,
                            event.container.data,
                            event.previousIndex,
                            event.currentIndex);                        
        }
      }   
     
      open(content) {
        this.modalService.open(content);
        Object.seal(this.bibliothequeArticles)
      }
     
     
    }

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    Object.seal(this.bibliothequeArticles)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    chargé de clientèle
    Inscrit en
    Septembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : chargé de clientèle

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse ,mais cela ne fonctionne pas , apparemment le contenu est modifier avant que la methode ne s'applique

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/02/2014, 20h17
  2. Gestion du click avec le drag and drop
    Par Tendhor57 dans le forum jQuery
    Réponses: 4
    Dernier message: 07/08/2013, 10h08
  3. [WD16] Perte d'identifiant dans un arbre avec le drag and drop
    Par Francis D dans le forum WinDev
    Réponses: 0
    Dernier message: 05/04/2011, 11h22
  4. Réponses: 0
    Dernier message: 21/07/2010, 06h37
  5. Réponses: 1
    Dernier message: 29/04/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo