Eckige 2 - *ngif nicht erfrischend, wenn variable update von oberservable abonnieren
in der html habe ich die Warnung sollte nur gezeigt werden, wenn ein Fehlerzustand Auftritt, wie thius
<div class="alert alert-danger" *ngIf="error">
<strong>Not saved!</strong> There was an error when saving the project. Please try again later.
</div>
diese funktioniert einwandfrei. aber wenn ich den Wert aus einem beobachtbaren die ngIf nicht den aktualisierten Wert.
Hier der vereinfachte code, der setzt immer error auf true für die Prüfung purposses
export class createProjectComponent {
constructor(private service:ProjectsService){
}
model = new myModel();
error = false;
submitForm(){
this.service.createProject(this.model).subscribe(i=>{
this.error=true;
}
}
gibt es irgendeine Art der Benachrichtigung, die ich anstoßen müssen?
- Was ist
this.service.createProject(this.model)
tun? Sind Sie mit einigen nicht-Angular2 Bibliothek gibt? - derzeit macht er nichts und gibt nur eine beobachtbare (kein Fehler) . Und ich habe auch ausgetestet, dass die error-Eigenschaft auf true festgelegt ist . Ich nehme an, es hat zu tun mit irgendeiner Art von hintergrund-task, rxjs schafft
- Können Sie reproduzieren, in Plunker?
- Dein code sieht gut aus. Ich auch *ngIf wie Sie und es sollte funktionieren. Sie zu Unrecht verwenden
subscribe()
. Versuchen.subscribe( data => {}, error => {this.error =true});
- er ist nicht falsch von mit .abonnieren Sie, wie er es Tat. Er hat einfach nicht den Fehler behandeln 😉
- Bitte erstellen Sie eine Plunkr. Ich habe versucht zu machen, ist hier : plnkr.co/Bearbeiten/c64OLrDKJldBkoRqY8Jr?p=Album Vorhören und nichts ist falsch (2s warten und du wirst sehen der Fehler). Denke, vielleicht etwas mehr relevanten code.
- Ich weiß, dass es funktionieren sollte. Ich verstehe einfach nicht, warum er versucht, behandeln Fehler in "erfolgreiche", callback 😛
- ach ich wusste nicht einmal, Fokus auf variable name haha.
- es wurde nur zum testen Dinge aus 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, wenn dies behebt Ihr Problem:
Wenn es tut, es ist ein code in
this.service.createProject(this.model)
, die verursacht, dass die Ausführung verlassen Angulars zone.update
Brauchen Sie nicht dieses, wenn Sie
()=>
überall stattfunction ()
und wenn Sie don ' T-pass-Funktionen mit Namen wiesomeFunc(mycallback)
sondern mitsomeFunc(() => mycallback())
odersomeFunc(mycallback.bind(this))
this.error=true;
ausgeführt wird, überhaupt?[ New | V ]
Schaltfläche in Plunker. Es ist ein ready-to-use Angular2 TS-template, als auch.Den Fehler gefunden. die
this
änderungen . im beobachtenthis
Punkte der osbervable nicht mehr an die Komponente.so habe ich, um eine Referenz auf die Komponente, um eine variable und setzen Sie Fehler auf dieser Referenz zu wahren.
funktionierende code sieht wie folgt aus:
()=>
überall stattfunction ()
und wenn Sie don ' T-pass-Funktionen mit Namen wiesomeFunc(mycallback)
sondern mitsomeFunc(() => mycallback())
odersomeFunc(mycallback.bind(this))