2016-08-03 12 views
1

Ich stoße auf ein Problem, bei dem ein Nullwert (anstelle eines Arrays von Lectures) an eine Pipe übergeben wird, wenn der sichere Navigationsoperator auf einer Async geladenen Observablen verwendet wird :Sicherer Navigationsoperator für asynchrone Observable und Pipe in Angular 2

<div *ngFor="let lecture of ((lecturesObservable | async)?.lectures | lectureType: 'main')" class="list-group-item"> 

Lecture-type.pipe.ts

import { Pipe, PipeTransform } from '@angular/core'; 

import { Lecture } from './lecture'; 

@Pipe({name: 'lectureType'}) 
export class LectureTypePipe implements PipeTransform { 
    transform(allLectures: Lecture[], lectureType: string): Lecture[]{ 
     return allLectures.filter(lecture => lecture.type==lectureType); 
    } 
} 

die Vorträge werden durch gut ohne das Rohr iteriert, sobald sie von Async geladen werden. Ist das nur etwas, mit dem ich in ng2 leben muss?

Antwort

0

Die asynchrone Pipe wird von Entwurf auf null aufgelöst, wenn ihre beobachtbare Eingabe noch keinen Wert hat. Sie müssen also damit leben, indem Sie Ihre Pipe so gestalten, dass sie einen Null-Input verarbeitet.

+0

Dank @Douglas, offensichtlich wirklich - dachte, ich hatte schon versucht, aber eine einfache: Wenn (allLectures! == null) in der Transformation funktioniert wunderbar! – theotherdy

0

Sie können auch zum Beispiel eine BehaviorSubject verwenden, die einen Standardwert liefert, so dass Angular nicht wirft, wenn noch kein Wert empfangen wurde.

+1

Danke - Ich versuche immer noch, alle Observablen und Themen in den Griff zu bekommen, also bin ich mit @Douglas einfacher Lösung gegangen – theotherdy

+0

No prob. Es ist ganz deine Entscheidung :) –

Verwandte Themen