2016-06-07 2 views
18

Я использую Angular 2 wit rxjs, наблюдаемый. Я создал этот интерфейс:Angular2 - привязка ui к наблюдаемому свойству

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

Я использую его в качестве наблюдаемой и передачи его в качестве вклада в Ui:

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

Проблема в том, когда в пользовательском интерфейсе при связывании весь объект как это я могу видеть, что это значение печатается и отображается:

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

При использовании связывания специфических свойств (что-конечно его часть игры) ничего на экране - просто покупать право y строка:

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

Возможно ли вообще? Должен ли я передать имя & описание как разные входы?

ответ

30

async труба делает подписки в поле зрения привязок

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

? необходимы только тогда, когда null значение может быть испускаются.

+1

здорово! что это такое. –

+1

Thx, очень полезно –

1

Вот пример

// 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

Hi Relu, Почему вы привязываетесь к наблюдаемому > а не Observable ? Не должно ли наблюдаемый поток автомобилей, поскольку они загружаются из бэкэнда? Не стоит ли заменять всю коллекцию при изменении? –

+2

Его пример. отпусти ситуацию – JSF

Смежные вопросы