2017-07-06 4 views
1

Ich habe eine Funktion, die eine Observable zurückgibt, wenn eine Zeile in einer Tabelle angeklickt wird.Angular 2-4 Observable, das von einem Klickereignis kommt

private onEnrollmentHistory(val: Enrollment[]) { 
     this.enrollments = val; 
     console.log(this.enrollments); 
    } 

    getEnrollmentHistoryById(id: number) { 
     this.toggleMoreInfoDialog(); 
     return this.store.getEnrollmentHistoryById(id) 
      .subscribe(
       this.onEnrollmentHistory 
      ); 
    } 

Ich bin nicht sicher, wie Sie diese Informationen in die Komponente HTML erhalten. Ich kann nicht <div *ngFor="let enroll of someService | async"> tun, weil die ID nicht bekannt ist, bis jemand darauf klickt. Gibt es eine Syntax, die ich vermisse, um einen Text in einem div zu diesem Observable zu haben? etwas wie <div (ngModel)="this.bSubject.getValue()">?

die Funktion aus einer Tabellenzeile genannt

<td> 
(click)="getEnrollmentHistoryById(id)" class="fa fa-2x fa-info"> 
</td> 


<div class="container"> 
     <div class="row"> 
     here are enrollments 
      <div *ngFor="let e of enrollments"> 
       {{e}} 
      </div> 
     </div> 
</div> 

Das bedeutet, ist nur zu lesen, ich brauche nur etwas von der DB mit den beobachtbaren greifen, und zeigen Sie es auf der Seite auf einem Click-Ereignisse.

+0

pls post the html wo '(klicken)' Ereignis ist gebunden. – Dhyey

+0

Ziemlich unklar, da wir keine Ahnung davon haben, was Sie erreichen wollen. Aber wie wäre es mit '

{{ bSubject.getValue() }}
'. Nicht einmal sicher, warum Sie ein BeahaviorSubject verwenden, um den Wert zu speichern, anstatt den Wert direkt in Ihrer Komponente zu speichern. –

+0

@JBNizet Ich habe ein wenig mehr Kontext hinzugefügt. Im Grunde frage ich, ob es eine eckige Möglichkeit gibt, die Notwendigkeit für meine onEnrollmentHistory-Funktion zu entfernen, wenn ich eine Zustandsvariable haben muss, die gefüllt wird, sobald die Anfrage beendet ist. Selbst wenn ich es mit dem hinzugefügten zusätzlichen HTML-Code mache, sehe ich nichts in der HTML-Komponente, obwohl sich in der Konsole die richtigen Daten befinden. – wootscootinboogie

Antwort

1

Meine Lösung war eine Variable der Komponente enrollmentHistory = new Observable<Enrollment[]>(null); und auf dem Click-Ereignis hinzuzufügen tun

enrollmentHistory = this.getEnrollmentHistoryById(id) und in der Ansicht <div *ngFor="let e of enrollmentHistory | async"> und das gab mir, was ich brauchte.

Verwandte Themen