私はAngular4で簡単なリスト詳細サンプルを作成しました。詳細ページでは、Observable型クラスを持つアイテムの詳細を表示できませんでした。コードブロックの下にコピーする。観測可能なアイテムの値がhtmlテンプレートに表示されない理由
@Component({
selector: 'app-user-detail',
template: `
<h2>User Details</h2>
<div *ngIf="user$ | async as user; else elseBlock">
<h3>{{user$.name.first }}</h3>
<p>
<button (click)="goBack()">Back</button>
</p>
</div>
<ng-template #elseBlock>Undefined data</ng-template>
`,
styleUrls: [ './user-detail.component.css' ]
})
export class UserDetailComponent implements OnInit {
user$: Observable<User>;
constructor(
private userService: UserService,
private route: ActivatedRoute,
private location: Location
) {}
ngOnInit(): void {
this.user$ = this.route.paramMap
.switchMap((params: ParamMap) => this.userService.getUser(params.get('email')));
// .subscribe(function(x) { console.log(x); });
}
goBack(): void {
this.location.back();
}
}
ユーザー$オブジェクトを次のコードブロックでチェックすると、コンソールログにユーザーデータが正常に取得されることがわかります。
this.route.paramMap
.switchMap((params: ParamMap) => this.userService.getUser(params.get('email')));
.subscribe(function(x) { console.log(x); });
しかし、私はhtmlテンプレートでユーザーデータを表示できませんでした。
私はちょうどAngular.ioでサンプルを追跡しました。そのサンプルでは、それは観測可能なプロパティに参照され、実行されます。 https://angular.io/generated/live-examples/router/eplnkr.html - hero-detail.component.tsこのタイプコードはほぼ同じです。私は別の問題があると思います –
'h3'の中で' user $ 'を使うのは明らかなエラーです。おそらく唯一のものではありませんが、そのエラーが解決されない限り、確かに動作しません。 – cartant