2016-06-07 16 views
18

Używam obserwowanego Angular 2 wit rxjs. Stworzyłem ten interfejs:Angular2 - Wiązanie interfejsu użytkownika do obserwowalnej właściwości

interface IGame { 
    name: string; 
    description: string; 
} 

używam go jako obserwowalne i przepuszczenie go jako wejście do Ui:

@Input() public game: Observable<IGame>; 

Problem jest, gdy w interfejsie użytkownika podczas wiązania cały obiekt jak to widzę, to jest wartość drukowane i wyświetlane są:

<h3>{{game | json}}</h3> 

Podczas korzystania wiążący konkretnej nieruchomości (co-oczywiście jej część gry) nic na ekranie - po prostu ograniczanie y ciąg:

<h3>{{game.name}}</h3> 
<h3>{{game.description}}</h3> 

Czy to w ogóle możliwe? czy powinienem podać nazwę & jako różne dane wejściowe?

Odpowiedz

30

Rura async ma zapis w widoku wiązania

<h3>{{(game | async)?.name}}</h3> 

? jest konieczne tylko przy null wartości mogą być emitowane.

+1

świetnie! co to jest. –

+1

Thx, bardzo pomocna –

1

Oto przykład

// the controller 
import { Component, OnInit } from '@angular/core'; 
import { Observable }  from 'rxjs/Observable'; 
// your controller metadata 
// .... 
export class ListComponent implements OnInit { 
    vehicles: Observable<Array<any>> 
    ngOnInit() { 
     this.vehicles = Observable.interval(2200).map(i=> [{name: 'car 1'},{name: 'car 2'}]) 
    } 
} 
// in the template 
<div *ngFor='let vehicle of vehicles | async'> 
    {{vehicle.name}} 
</div> 
+1

Cześć Relu, Dlaczego wiążę się z Observable > zamiast Observable ? Czy nie powinien być widoczny strumień samochodów, ponieważ są one ładowane z serwera? Czy wymiana nie jest kosztowna po zmianie? –

+2

To tylko przykład. Odpuść sobie – JSF

Powiązane problemy