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

AngularJS Discussion :

Ajouter des variables dans un flux d'Observable


Sujet :

AngularJS

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 77
    Points : 42
    Points
    42
    Par défaut Ajouter des variables dans un flux d'Observable
    J'ai une variable Observable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    export class Thread {
      id: string;
      messages: Observable<Message[]>;
     }
    Je voudrais ajouter des variables Message à ce flux d'Observable. La variable messages doit contenir une collection de Message.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const newMessage = new Message(objMessage);
    J'essaye d'utiliser la méthode .net mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    thread.messages = new Observable((observer: any) => {
                observer.next(newMessage);
              });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    thread.messages.subscribe((message: Message) => {
      thread.messages = message;
    });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    thread.messages.subscribe((value: Message[]) => {
                value.next(newMessage);
              });
    Savez-vous s'il est possible d'utiiser la méthode .next sur un flux d'Observable ?

  2. #2
    Membre éclairé
    Avatar de LearningBoy
    Homme Profil pro
    Ingénieur Logiciel - Fullstack JavaScript
    Inscrit en
    Août 2017
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logiciel - Fullstack JavaScript
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 73
    Points : 664
    Points
    664
    Par défaut Exemple qui fonctionne
    Bonjour bzh.floriane,

    J'ai mis en place dans une des mes applications une fonctionnalité d'auto-complétion avec un Observable, voici ce qui fonctionne chez moi (exemple en TypeScript) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private searchTerms = new Subject<string>();
     
    search(term: string): void {
      this.searchTerms.next(term);
    }
    Ensuite j'ai une autre méthode pour traiter le flux. Voici la démonstration de l'application : https://ng2-pokemon-app.firebaseapp.com/login.

    Cordialement,

    Simon, auteur sur awesome-angular.
    Découvrez "Angular, ECMAScript 6 et TypeScript" pour vos futurs développements web...

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 77
    Points : 42
    Points
    42
    Par défaut
    Comme ceci, dans mon cas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private subject = new Subject<Message[]>();
     
    this.subject.next([newMessage]);
     
    thread.messages = this.subject:
    Cela fonctionne mais ma variable thread.messages ne contient pas tous les messages, elle ne contient que un message à la fois.
    Sais-tu comment obtenir une pile de messages dans ma variable thread.messages.

  4. #4
    Membre éclairé
    Avatar de LearningBoy
    Homme Profil pro
    Ingénieur Logiciel - Fullstack JavaScript
    Inscrit en
    Août 2017
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logiciel - Fullstack JavaScript
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 73
    Points : 664
    Points
    664
    Par défaut Réponse
    Bonjour bzh.floriane,

    A la ligne 2, je pense que tu réinitialise ton Observable en lui passant un tableau contenant ton message plutôt que ton message directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    this.subject.next([newMessage]); // Tableau contenant ton message, essaye ceci plutôt : 
     
    this.subject.next(newMessage);
    En espérant que ça marchera,

    Simon,

    auteur sur AwesomeAngular.
    Découvrez "Angular, ECMAScript 6 et TypeScript" pour vos futurs développements web...

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 77
    Points : 42
    Points
    42
    Par défaut
    Non, cela ne fonctionne pas car ma variable Subject est un tableau.
    Voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Argument of type 'Message' is not assignable to parameter of type 'Message[]'

  6. #6
    Membre éclairé
    Avatar de LearningBoy
    Homme Profil pro
    Ingénieur Logiciel - Fullstack JavaScript
    Inscrit en
    Août 2017
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logiciel - Fullstack JavaScript
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 73
    Points : 664
    Points
    664
    Par défaut Observable
    Bonjour,

    L'erreur affiche est logique en effet.

    Au niveau de la déclaration de votre Observable, déclarez bien un flux de Message et non un flux de tableau de Message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private subject = new Subject<Message>();
    L'Observable contiendra bien une suite d'objet de type Message. Est-ce que cela fonctionne avec cette modification ?
    Découvrez "Angular, ECMAScript 6 et TypeScript" pour vos futurs développements web...

Discussions similaires

  1. [XL-2010] Ajouter des variables dans la propriété FormulaR1C1
    Par BDA53 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2015, 17h26
  2. Réponses: 3
    Dernier message: 21/05/2014, 08h18
  3. Réponses: 8
    Dernier message: 06/09/2012, 13h41
  4. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  5. Ajouter des chemins dans la variable PATH
    Par Righetto Dominique dans le forum Linux
    Réponses: 7
    Dernier message: 21/03/2004, 17h38

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