2016-04-04 5 views
1

Hallo ich habe eine einfache Komponente und einen Dienst. Wenn Benutzer auf Senden Schaltfläche klicke ich einen Dienst, wo ein asynchrones Thema einen Wert an alle Abonnenten sendet.Ich habe es mit Thema gemacht funktioniert es gut, aber ich möchte es tun Async Subject.I verwenden, haben eine Demo hier http://plnkr.co/edit/tHjPVZ5NurJRWdCM9lbt?p=preview gemacht ... das ist mein Dienst ...Wie asynchrone Subjekt in angular2 verwenden?

export class ErrorService{ 
    latestError:AsyncSubject<>=new AsyncSubject(); 

    error(){ 
    this.latestError.next('form submitted'); 
    } 
} 

Und das ist meine Komponentenklasse, wo ich bin abonniert die asyncsubject

export class AppComponent { 
    result:any; 
    constructor(private service:ErrorService){ 
    this.service.latestError.subscribe(err=> this.result=err); 
    } 

    onSubmit() { 
    this.service.error(); 
    } 
} 

Aber das ist Wurffehler ... Ich weiß nicht, wo ich falsch liege ... Jemand bitte hilf mir diesen Fehler zu korrigieren und zu zeigen

import {AsyncSubject} from 'rxjs/subject/AsyncSubject'; 

@Injectable() 
export class ErrorService{ 
    latestError:AsyncSubject<>=new AsyncSubject(); 
    error(){ 
    this.latestError.next('form submitted'); 
    } 
} 

Sehen Sie diese plunkr: http://plnkr.co/edit/SAl4YVXKRWpS7OeTYMrd?p=preview mir, wie async Subjekt und emittieren Werte an seine Abonnenten

Antwort

3

Sie müssen schließen die Klasse auf diese Weise verwenden.

+1

ist dies 'importieren {AsyncSubject} aus 'rxjs/subject/AsyncSubject'; jede vordefinierte Klasse/Import? –

+0

Aber wenn .next() in meiner Dienstklasse aufgerufen wird, gibt es einen Wert aus. Und ich habe das asynchrone Subjekt in meinem Konstruktor abonniert ... Aber ich bekomme nicht den Wert, der vom asynchronen Subjekt ausgegeben wurde –

+1

@PardeepJain Sie kann es auch vom rxjs/Rx Modul importieren: 'import {AsyncSubject} von 'rxjs/Rx';'. –

Verwandte Themen