Qualcuno può aiutare a vedere se c'è un errore di sintassi qui nel mio modello? Non dà errore, ma non inserisce dati nel modello.il tubo asincrono angular2 non riempie i dati oggetto nel modello
<div *ngIf="(hero | async)">
<h2>{{hero}}</h2>
<h2>{{hero.name}} details!</h2>
<div>
<label>_id: </label>{{hero._id}}</div>
<div>
<label>name: </label>
<input [(ngModel)]="hero.name" placeholder="name" />
</div>
<button (click)="goBack()">Back</button>
</div>
codice componente
export class HeroDetailComponent implements OnInit {
errorMessage: string;
//@Input()
hero: Observable<Hero>;
constructor(
private _heroService: HeroService,
private _routeParams: RouteParams) {
}
ngOnInit() {
let _id = +this._routeParams.get('_id');
this._heroService.loadHero(_id);
this.hero = this._heroService.hero$;
this.hero.subscribe(data =>
console.log(data)
)
}
I console.log (dati) stampa oggetto {_id: 11, il nome: "Mr. Nice"} me che che i dati vengono recuperati in modo corretto.
Si visualizza anche il blocco <div>
, che significa * ngIf vede l'oggetto come non vuoto.
<h2>{{hero}}</h2>
mostra [oggetto oggetto].
Ma perché il {{hero.name}} non viene visualizzato?
Hai un paio di cose mescolato. 'hero' è una proprietà di input, ma poi gli assegni un valore in ngOnInit() - che è dispari. Il valore assegnato è un Observable, che non ha una proprietà 'name', il che spiega perché' {{hero.name}} 'non funzionerà. Questa risposta dovrebbe aiutarti: http://stackoverflow.com/a/34561532/215945 –
Ho aggiornato il post e rimosso @input. Ma è sempre lo stesso. Il tubo asincrono dovrebbe trasformare l'osservabile in oggetto eroe? – Shawn